2.29 操作文件 1. 找到文件 打开 2. 读, 修改 3. 保存 关闭 1. f.open(filename) 2. f.read(50) 只读50个.. f.read() 不写数字就读所有, f.write(YOURDATA) 3. f.close() ---------------- 文件打开模式 只能以一种方式 python比较变态,只能以读、创建、追加 3种模式中的任意一种打开文件,不能即写又读。 操作模式 r 只读模式 w 创建模式,若文件已存在,则覆盖旧文件 a 追加模式,新数据会写到文件末尾 创建文件 f = open(file='D:/工作日常/staff.txt',mode='w') f.write("Alex CEO 600 ") f.write("黑姑娘 行政 5000 ") f.close() 只读模式 f = open(file='兼职白领学生空姐模特护士联系方式.txt',mode='r') print(f.readline()) # 读一行 print('------分隔符-------') data = f.read() # 读所有,剩下的所有 print(data) f.close() 追加模式 f = open(file='兼职白领学生空姐模特护士联系方式.txt',mode='a') f.write("黑姑娘 北京 168 48 ") # 会追加到文件尾部 f.close() 循环文件 f = open(file='兼职白领学生空姐模特护士联系方式.txt',mode='r') for line in f: line = line.split() split不添加参数默认是空格分隔, 分隔后每行是一个列表 name,addr,height,weight,phone = line height = int(height) weight = int(weight) if height > 170 and weight <= 50: print(line) f.close() f.seek() 走多少个字节.. ,如果是英文,每次1个, 如果是中文 每个汉字3个字节 f.flush() 强制刷到硬盘 为什么要强制刷新到硬盘,是因为 文件写入不是马上到硬盘的,都是临时存在 内存, 如果断电,就gg... 所以有了flush,而且还不需要f.close. 就可以直接到硬盘了.正常是f.close之后 才到硬盘 f.tell() 返回光标的位置 f.truncate(100) 从0截断到100 如果里面不写数字,就从光标的位置到末尾 全部去掉 举例 f = open('空姐联系方式.txt','a',encoding='utf-8') f.seek(9) print(f.tell()) f.truncate() f.truncate() 如果不写数字,就从光标的位置9到末尾 全部没了 如果写了数字,这个时候又有seek,那么, seek失效,直接从0开始,从头开始截断到数字位置 ----------------------------- 读 f.read 一次性读完, 读完是个str f.readline 一次读一行 读完是个str f.readlines 一次性读完所有行,,返回的是列表 ----------------------- 2.33 混合模式下处理文件 w+ 写读 , 这个功能基本没什么意义,它会创建一个新文件 ,写一段内容,可以再把写的内容读出来,没什么卵用。 r+ 读写,能读能写,但都是写在文件最后,跟追加一样,, 不会覆盖源文件, 往后添加 a+ 追加读,文件 一打开时光标会在文件尾部,写的数据全会是追加的形式 以上3种 都不常用 -------------- 修改文件 r+ f = open('空姐联系方式.txt','r+',encoding='utf-8') f.seek(6) f.write("你好") 我想你好456789 123456你好你好你好 我想请123456789 123456你好你好你好 以上2行内容本来意义,执行代码后偏移6个字节,后,请123,变成了你好. 你好占了6个字节,所以 请123被吃掉了 ---------------