Python基础之文件操作
1、文件的打开方式
读文件的方式有四种:
r:只读
rb:二进制读取
r+:读写,先读在写,在文件光标处接着写
r+b:二进制读取数据,英文读取英文,中文转为二进制
# #文件操作,打开一个文件,读取文件内容,返回文件内容为字符串 f = open('info', mode='r', encoding='utf-8') content = f.read() print(content, type(content)) f.close() # #二进制读取 f = open('info', mode='rb') content = f.read() print(content, type(content)) f.close() #读写,先读出内容,再在结尾处写文件 f = open('info',mode='r+',encoding='utf-8') print(f.read()) f.write('\n大猛,小孟') f.close() #中文转为二进制的数据,英文字母不转,返回 f = open('info', mode='r+b') print(f.read()) f.write('大猛,小孟'.encode('utf-8')) f.close()
写文件的方式也有四种:
w ,wb:区别不大
w+ :写完之后重置光标才能读取,否则光标在最后,读取不到内容
w+b:写的内容需要
f = open('info',mode='w',encoding='utf-8') f.write('附近看到类似纠纷') f.close() #wb f = open('log',mode='wb') f.write('附近看到类似纠纷'.encode('utf-8')) f.close() # w+ w+b写的内容需要加二进制形式 f = open('info',mode='w+b') f.write(b'aaa') #f.write('aaa'.encode('utf8'))
f.seek(0) print(f.read()) f.close()
追加方式:
f = open('info',mode='a',encoding='utf8') f.write('佳琪') f.close()
注意:读出来的都是字符串即是str类型,
2.文件的其他操作
#read,readline,readlines区别 #一次性读完,之后for循环相当于对所有内容(内容为str)循环遍历 f = open('info',mode='r',encoding='utf8') #['a', 'a', 'a', '佳', '琪', '佳', '琪', '', '1', '2', '3', '3', '3', '3', '3', '3', '3', '3', '', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '', '2', '2', '2', '2', '2', '2', '2', '2', '2', '2'] read_L= [] for line in f.read(): read_L.append(line.strip()) f.close() print(len(read_L)) print(read_L) #只读一行,之后for循环相当于对所有内容(内容为str)循环遍历 f = open('info',mode='r',encoding='utf8') #['a', 'a', 'a', '佳', '琪', '佳', '琪', ''] readline_L= [] for line in f.readline(): readline_L.append(line.strip()) f.close() print(len(readline_L)) print(readline_L) #每行读完当一个列表 f = open('info',mode='r',encoding='utf8') #['aaa佳琪佳琪', '1233333333', '1111111111', '2222222222'] readlines_L= [] for line in f.readlines(): readlines_L.append(line.strip()) f.close() print(len(readlines_L)) print(readlines_L)
修改文件
with open('info',encoding='utf-8') as f,open('info.bak','w',encoding='utf-8') as f2: for line in f: if 'aaa' in line: #班主任:星儿 line = line.replace('aaa','******') #写文件 f2.write(line) #小护士:金老板 import os os.remove('info') #删除文件 os.rename('info.bak','info') #重命名文件
注意:文件使用过程中要习惯使用with open()打开文件,这样会自动关闭文件,而不用输入f.close(),且只在Python3才有with open()操作,py2不支持这个操作