通过open()
函数,可以方便的打开文件,同时可以指定操作方式(字符还是二进制),什么操作(读、写还是其他)和编码类型
操作模式 | 具体含义 |
---|---|
'r' | 读取 (默认) |
'w' | 写入(会先截断之前的内容) |
'x' | 写入,如果文件已经存在会产生异常 |
'a' | 追加,将内容写入到已有文件的末尾 |
'b' | 二进制模式 |
't' | 文本模式(默认) |
'+' | 更新(既可以读又可以写) |
如果是二进制就在后面加个b,比如rb
读取文本文件
读取一个test.txt文本文件:
def main():
f=open('G:\\5Code练习\\python_work\\python打卡练习\\test.txt','r',encoding='UTF-8')
print(f.read())
f.close()
if __name__ =='__main__':
main()
用.read()
读取内容,.close()
释放资源
也可以
with open('G:\\5Code练习\\python_work\\python打卡练习\\test.txt','r'
,encoding='UTF-8') as f :
print(f.read())
使用with
上下文语法,通过with
关键字指定文件对象的上下文环境并在离开上下文环境时自动释放文件资源
有时运行时会出错,比如找不到文件,或者编码方式有误
def main():
try:
with open('G:\\5Code练习\\python_work\\python打卡练习\\tes.txt','r'
,encoding='UTF-8') as f :
print(f.read())
except FileNotFoundError:
print('找不到文件')
except LookupError:
print('指定了未知编码')
except UnicodeDecodeError:
print('文件解码错误')
if __name__ =='__main__':
main()
通过try``except
方式当遇到异常时及时地切出去。
除了用read还可以逐行读取,方法有两个一个时用 for-in
循环读取,另一个是用.readline()
方法读取到一个列表中。
with open('G:\\5Code练习\\python_work\\python打卡练习\\test.txt','r'
,encoding='UTF-8') as f :
lis=[]
for line in f:
lis.append(line)
print(lis)#['test\n', '打卡\n']
try:
with open('G:\\5Code练习\\python_work\\python打卡练\\test.txt','r',
encoding='UTF-8') as f :
lis=f.readlines()
print(lis) #['test\n', '打卡\n']
写文件
只需把’r’改成’w’如果要追写改成’a’
list1=['test1.txt','test2.txt']
for txt in list1:
with open('G:\\5Code练习\\python_work\\python打卡练习\\'+txt,'w') as f:
f.write('a')
其他
如果没有此文件就会新建一个,不会报错。
这样如果是向一个空文件中写入内容(也是用.write(内容)
的方法),就相当于保存作用。对二进制文件也是一样的,不过是open内的参数不同而已。