文件操作
针对磁盘中的文件的读写。文件I/O 输入input 输出output
文件操作步骤
1、打开文件 2、读写文件 3、关闭文件
1、打开文件 open()
参数1:文件路径
相对路径 绝对路径
参数2:打开方式
一、基础模式:w r x a
w模式 :write 写入
1、文件如果不存在则创建文件
2、文件如果存在,则打开文件并且清空文件内容
3、文件打开后,文件的指针在文件的最前面
r模式:read 读取模式
1、如果文件不存在,则报错
2、如果文件存在,则打开文件
3、文件指针在文件的最前面
x模式:xor 异或模式
1、如果文件不存在,则创建这个文件
2、文件存在,则报错(防止覆盖)
3、文件指针在文件的最前面
fp = open('./1.txt','x',encoding='utf-8')
a模式:append 追加模式
1、文件不存在则创建
2、文件存在,则打开文件(和w模式的区别在于a模式打开文件后不会清空)
3、文件指针在当前文件的最后面
二、扩展模式:
b模式 bytes 二进制
+模式 plus模式 增强模式(可读可写)
三、文件操作模式的组合:
w,r,a,x
wb,rb,ab,xb
w+,r+,a+,x+(w+ 可读写,与a+的区别是要清空文件内容;r+ 可读写,与a+的区别是可以写到文件任何位置;a+ 可读写模式,写只能写在文件末尾)
wb+,rb+,ab+,xb+
参数 encoding 可选参数,设置文件的字符集
如果是一个二进制的文件时,不需要设置字符集
encoding='utf-8'
文件读取-------read()------读取所有文字
1、打开文件 open()
2、读取文件内容read()
3、关闭文件close()
#打开文件,创建一个文件对象 f = open('guyouzhe','r',encoding='utf-8') #读取内容。使用文件对象,调用read() res = f.read() print(res) #关闭文件,使用文件对象调用close(),关闭文件 f.close()
r模式下打开文件只能读一次,根本原因:Python 文件操作中,有一个玩意叫做指针(seek),seek(0)调整指针从头开始。
#打开文件,创建一个文件对象 f = open('guyouzhe''r',encoding='utf-8') #读取美容。使用文件对象,调用read() res = f.read() f.seek(0) #调整指针的位置,从头开始 res2 = f.read() f.seek(0) #调整指针的位置,从头开始 res3 = f.read() print(res) print('--2---') print(res2) print('---3---') print(res3)
readline()读取行数
文件写入-------write()
写入文件的操作:
1、打开文件 open()
2、写入内容write()
#打开文件,创建一个文件对象 f = open('test.txt','w',encoding='utf-8') #写入内容。使用文件对象调用write()方法 res = f.write('蝶与我舞,鸟为我奏。 风与我笑,雨与我哭。 风伴与我,我随它舞。') #关闭文件,使用文件对象调用close().关闭文件 f.close()
文件追加----'a':以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,存在,则在文件末尾追加内容,指针在文件末尾
f = open('test.txt','a',encoding='utf-8') #写入内容。使用文件对象调用write()方法,写在文本的最后面 res = f.write('\n蝶与我舞,鸟为我奏。\n') res = f.write('孤独是因为没有找到合适的同行者\n') #关闭文件,使用文件对象调用close().关闭文件 f.close()
修改文件中的内容-------replace('修改前','修改后')
f = open('guyouzhe','r',encoding='utf-8') f_new =open('guoyouzhe.txt','w',encoding='utf-8') for line in f: if '爱你孤身走暗巷' in line: line =line.replace('爱你孤身走暗巷','---------') f_new.write(line) f.close() f_new.close()
with语句
有一些任务,可能事先需要设置,事后做清理工作。为了避免打开文件忘记关闭,可以通过管理上下文
语法:
with open('test','r',encoding='utf-8') as file:
.........
执行完with后,内部会自动关闭并释放文件资源。
with open('guyouzhe','r',encoding='utf-8') as file: for line in file: print(line)