如何利用python代码写一个软件,去操做文件。python
文件路径:pathlinux
打开方式:读,写,追加,读写,写读......windows
编码方式:utf-8,gbk ,gb2312......函数
#打开文件并读取 f1 = open('d:\123.txt',encoding='utf-8',mode='r') content = f1.read() print(content) f1.close()
代码解释:学习
open()内置函数,open底层调用的是操做系统的接口。 f1,变量,f1,fh,file_handler,f_h,文件句柄。对文件进行的任何操做,都得经过文件句柄. 的方式。 encoding:能够不写,不写参数,默认编码本:操做系统的默认的编码 windows: gbk or utf-8 linux: utf-8 mac : utf-8 f1.close() 关闭文件句柄。
文件操做的三部曲:编码
报错缘由:操作系统
UnicodeDecodeError:文件存储时与文件打开时编码本使用不一致。code
第二个错误: 路径分隔符产生的问题:视频
解决方式1(加\ 使转义字符无效) C:\\Users\oldboy\Desktop\123.txt' 解决方式2(加r') r'C:\Users\oldboy\Desktop\123.txt'
#.read() 所有读出来 f = open('文件的读', encoding='utf-8') content = f.read() print(content,type(content)) f.close() #.read(n) 按照字符读取,读出n个字符 f = open('文件的读', encoding='utf-8') content = f.read(5) print(content) f.close() #.readline() 按照一行行读 f = open('文件的读', encoding='utf-8') print(f.readline()) print(f.readline()) print(f.readline()) f.close() #.readlines() 返回一个列表,列表中的每一个元素是源文件的每一行。 f = open('文件的读', encoding='utf-8') l1 = f.readlines() print(l1) f.close() #for循环读取(大文件) f = open('文件的读', encoding='utf-8') #['12\n', '34\n', '56\n', '78\n', '910\n'] for line in f: print(line) f.close() f = open('美女.jpg',mode='rb') content = f.read() print(content) f.close()
# 没有文件,建立文件,写入内容 f = open('文件的写',encoding='utf-8',mode='w') f.write('随便写一点') f.close() # 若是文件存在,先清空原文件内容,在写入新内容 f = open('文件的写',encoding='utf-8',mode='w') f.write('随便写一点点') f.close() # wb(两个步骤至关于复制一张图片的过程) f = open('美女.jpg',mode='rb') content = f.read() print(content) f.close() f1 = open('美女2.jpg',mode='wb') f1.write(content) f1.close()
# 没有文件建立文件,追加内容 f = open('文件的追加',encoding='utf-8',mode='a') f.write('123456') f.close() # 有文件,在原文件的最后面追加内容。 f = open('文件的追加',encoding='utf-8',mode='a') f.write('654321') f.close()
# 读并追加 (顺序不能错误。) f = open('文件的读写', encoding='utf-8', mode='r+') content = f.read() print(content) f.write('人的一切痛苦,本质都是对于本身无能的愤怒。') f.close() # 错误示例(先写再读)(utf-8中文三个字节,英文一个字节,先读时换行和标点对不上都会致使乱码和报错) f = open('文件的读写', encoding='utf-8', mode='r+') f.write('123456789') content = f.read() print(content) f.close()
# .tell 获取光标的位置 单位字节。 f = open('文件的读写', encoding='utf-8') print(f.tell()) content = f.read() print(content) print(f.tell()) f.close() # .seek 调整光标的位置 f = open('文件的读写', encoding='utf-8') f.seek(7) content = f.read() print(content) f.close() # .flush 强制刷新(强制保存) f = open('文件的其余功能', encoding='utf-8',mode='w') f.write('123456') f.flush() f.close()
# 优势1:不用手动关闭文件句柄 with open('文件的读',encoding='utf-8') as f1: print(f1.read()) # 优势2:一个语句操做多个文件句柄 with open('文件的读', encoding='utf-8') as f1,\ open('文件的写', encoding='utf-8', mode='w')as f2: print(f1.read()) f2.write('123456') # 缺点:它是在必定时间内关闭。
文件操做的改接口
文件操做改的流程
具体代码:
#简洁版 import os #1.以读的模式打开原文件。 #2.以写的模式建立一个新文件。 with open('文件操做的改',encoding='utf-8') as f1,\ open('文件操做的改.bak',encoding='utf-8',mode='w') as f2: #3.将原文件的内容读出来修改为新内容,写入新文件。 old_content = f1.read() new_content = old_content.replace('Jarvis', 'jarvis') f2.write(new_content) os.remove('文件操做的改') os.rename('文件操做的改.bak','文件操做的改') # 进阶版 import os #1.以读的模式打开原文件。 #2.以写的模式建立一个新文件。 with open('alex自述',encoding='utf-8') as f1,\ open('alex自述.bak',encoding='utf-8',mode='w') as f2: #3.将原文件的内容读出来修改为新内容,写入新文件。 for line in f1: new_line = line.replace('Jarvis', 'jarvis') f2.write(new_line) os.remove('文件操做的改') os.rename('文件操做的改.bak','文件操做的改') # 有关清空的问题: # 关闭文件句柄,再次以w模式打开此文件时,才会清空。 with open('文件的写', encoding='utf-8',mode='w') as f1: for i in range(9): f1.write('12345')