三元运算
三元运算又称三目运算,其作用就是把简单俄条件语句进行简单化。
a=2
b=5
val = a if a<b else b
# 结果:2
文件处理
如何操作一个文本文件?
在一般的情况下,我们首先是需要一个文本编辑器来打开这个文本文件的,无论是查看还是写入
到最后都是要保存于关闭的,那么在python中是如何对文件进行操作的呢?
在Python中实现文本文件的操作
文件的读操作
首先要明确操作文件的几个步骤:
1.打开文件
open('filename','mode','encoding')
#参数介绍:
file:文件名,或者文件的路径
mode:打开的模式
encoding:以哪一种编码格式读取或者写入该文件,需要注意的是文件就以哪一种编码格式写入的就得以哪一种编码格式来打开文件
2.读取文件或者写入文件
#1.读取文件
f = open('filename',r,'utf-8')
# 读取文件
f.read()
3.保存并关闭文件
f.close()
文件的遍历
f = open('filename','r','utf-8')
for line in f:
line.read()
f.close()
文件的写操作
步骤与读取文件相同,这里不细述,直接看例子好了:
f = open('filename','w','utf-8')
f.write('写文件测试')
f.close
# write参数介绍:self:文件本身,写入的文件内容
防止文件的覆盖写入(追加写入文件)
f = open('filename','a','utf-8')
文件可读可写
文件的读操作与写操作都已经学会了,这时发现这些模式只能执行一种操作,而在一般的情况下使用文件编辑工具是即可以读又可以写的,那么在Python中又如何实现呢?
f = open('filename','r+','utf-8')
操作文件的几种模式
r:以文本模式打开当前文件
rb:以二进制的模式打开当前文件,无需指定字符编码
w:写入文件 如果该文件不存在会自动创建该文件,如果该文件已存在的话,会覆盖原文件,所以使用w来写入文件需要慎重
wb:以二进制的模式写入文件
a:追加写入文件
ab:以二进制模式追加写入文件
r+:读写模式,文件指针会放在文件的开头
w+:读写模式,如果文件存在会覆盖原文件的内容
a+:读写模式,文件指针默认在文件的末尾
如何检测文件的编码?
使用中的第三方库(模块开检测):首先要说明一点,chardet模块需要自行安装:
安装模块:
#1.打开终端(Windows系统 打开cmd)
#2.输入以下命令
pip3 install chardet
# 这里解释一下由于个人电脑是双Python环境,单个Python环境使用 pip install 即可
检测编码:
import chardet
f = open('fname','rb')
data = f.read()
chardet.detect(data)
文件对象的其他方法
f.close():关闭文件
f.flush():刷新文件缓冲,直接把缓冲区的数据写入文件
f.readable():判断文件是否可读
f.readline():只读一行,包含换行符'\n'
f.seek():移动光标到指定位置
参数:offset-偏移量,移动的字节数
whence-可选参数,默认为0,0表示文件开头,1表示文件当前位置,2表示文件尾
f.tell():返回光标当前位置,以字节的方式查找
f.seekable():判断文件是否可以进行seek操作
f.truncate():按指定长度截断文件,截断位置首行收个字符,参数size,无参数则以当前位置开始截断,有参数 则,将文件截断层size个字节。(在Windows中换行符为2个字节)
f.wrteable():判断文件是否可以进行写操作
文件的修改
1.占用硬盘的修改,需创建一个新的文件然后覆盖该文件。
os模块,调用系统命令,replace覆盖文件
import os
old_name = 'test'
new_name = 'new_%s'%old_name
old_str = 'e'
new_str = '?'
old_file = open(old_name,'r',encoding='utf-8')
new_file = open(new_name,'w',encoding='utf-8')
for lien in old_file:
if old_str in lien:
lien = lien.replace(old_str,new_str)
new_file.write(lien)
old_file.close()
new_file.close()
os.replace(new_name, old_name) # rename在Windows无法使用时使用
2.使用内存修改,无需创建新的文件