一 文件处理: with open('a.txt', encoding='utf-8') as f1,\ open('b.txt', encoding='utf-8') as f2,\ open('c.txt', encoding='utf-8') as f3: pass ## \+回车 在pycharm中换到下一行,但实际上还是一行
with open('1.jpg',mode='rb',) as f: data=f.read() print(data,) print(type(data))
with open('db.txt',mode='rb',) as f: data=f.read() # print(data.decode('utf-8')) #bytes-----unicode print(type(data))
#‘utf-8’等是字符编码,只能处理字符,处理不了包括图片视频在内的其他形式
# b模式(二进制)也可以读txt,但要读出字符,需要解码
wb模式
with open('b.txt',mode='wb') as f: msg='你好啊,吴三炮' f.write(msg.encode('gbk'))#在utf-8平台乱码,reload去gbk可读 with open('b.txt',mode='ab') as f: msg='你好啊,吴三炮' f.write(msg.encode('utf-8'))#在gbk平台乱码,reload去utf-8可读
with open('b.txt',mode='rb') as f: data=f.read() print(type(data)) print(data.decode('utf-8'))
with open('1.jpg',mode='rb') as f: data=f.read() print(type(data)) print(data.decode('utf-8'))
##error, utf-8不能处理非字符类型文件
ab模式
with open('b.txt',mode='ab') as f: f.write('你好'.encode('utf-8'))
with open('1.jpg','rb') as f: for line in f: print(line)
可读可写 #不改变r/w/a在判断文件存在与否后作出的基本处理方法, 很少用 #r+t (r+) with open('b.txt','r+t',encoding='utf-8') as f: print(f.readable()) print(f.writable()) print(f.readline()) f.write('\n吴大炮你也号\n') #w+t (w+) #a+t (a+) #U :通用换行符,没用
三 文件的处理
with open('db.txt','r+',encoding='utf-8') as f: f.seek(9) #偏移量的单位是字节,utf-8中,一个中文字符占三个字节,一个英文字符占一个字节, print(f.tell()) #9 print(f.read())
with open('user.txt',mode='r',encoding='utf-8') as f: data=f.read() data=data.replace('吴佩其','吴佩其[老男孩第二帅的人]') with open('user.txt',mode='w',encoding='utf-8') as f: f.write(data)
修改文件方式二: 1、以读的方式打开原文件,以写的方式打开一个新文件
2、读一行原文内容,写入新文件,如果该行内容是需要修改的内容,那么修改完后再写入新文件
3、删除原文件,将新文件名重命名为原文件名
import os with open('user.txt',mode='rt',encoding='utf-8') as read_f,\ open('user.txt.swap',mode='wt',encoding='utf-8') as write_f: for line in read_f: if '吴佩其' in line: line=line.replace('吴佩其','吴佩其[老男汉特别特别的老]') write_f.write(line) os.remove('user.txt') os.rename('user.txt.swap','user.txt')
src_file_path=l[1] dst_file_path=l[2] # print(src_file_path) # print(dst_file_path) with open(r'%s' %src_file_path,mode='rb') as src_f,\ open(r'%s' %dst_file_path,mode='wb') as dst_f: for line in src_f: dst_f.write(line)