第四章 python的文件操作

匿名 (未验证) 提交于 2019-12-02 22:51:30

在python里,我们可以通过open()方法打开文件并且用内置方法处理文件内容。

需要注意的是,open() 会默认自动转换为2进制再存储(write方法执行时)。所以open命令也是在2进制的基础上进行存储的。

obj = open(file='路径',mode='模式',encoding='编码') obj.write()  # 可写模式下 obj.read()  # 可读模式下 obj.close()
  • 操作字符串
    • r/w/a
    • r+/w+/a+
  • 直接操作2进制
    • rb/wb/ab
    • r+b/w+b/a+b
  • read() #全部读入内存

    read(2) r模式下2表示读取前两个字符(不是字节),当rb模式,就是读取2个字节了

  • write(str) #w模式下,写入字符串

    wb模式下写入的是2进制,所以字符串需要decode到2进制进行写入: 'obj.write(你好'.decode(utf-8))

  • seek(光标字节的位置) #无视打开模式都是字节
  • tell() #获取光标当前所在的字节位置
  • flush() #强制将写入内存的数据刷到硬盘上,相当于保存到硬盘

文件不关闭,就会浪费资源。有时候写代码的时候会忘记close()

推荐文件打开方法: with open(file='路径',mode='模式',encoding='编码') as f: # 相当于 f = open(file='路径',mode='模式',encoding='编码') data = read() # 下一行会自动缩进, # 缩进里的代码执行完毕后自动关闭
同时打开复数个文件: with open(file='路径',mode='模式',encoding='编码') as f1,open(file='路径',mode='模式',encoding='编码') as f2:

对文件的写入是不能插入的(硬盘写入的规则)
所以当想插入的时候,需要先把文件内容全部读入内存,然后修改之后重新全部写入。

  • 大文件修改
    如果文件过大。那我们可以用一个temp文件来作为过渡文件。
    读取文件第一行(或者一定数量的字节),在内存修改,a模式写入temp文件。
    全部写入temp文件后,temp文件用os.replace()来覆盖原文件。
## 一边读行,一边修改,一边写入新文件 import os  old_file = r'C:\Users\kouneli\Desktop\python\temp\test.txt' new_file = r'C:\Users\kouneli\Desktop\python\temp\test_new.txt' f = open(old_file,'r') f_new = open(new_file,'a') old_str = 'o' new_str = 'K'  for line in f:     if old_str in line:         line = line.replace(old_str,new_str)          f_new.write(line)      f.close() f_new.close()     os.replace(new_file,old_file)        # 吧新文件名字改成源文件的名字,就把之前的覆盖掉了。 mac使用os.rename()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!