Python是个啥-第四章文件操作

第四章 文件操作

4.1 文件基本操作

obj = open('路径',mode='模式',encoding='编码')
obj.write()
obj.read()
obj.close()

4.2 打开模式

  • r / w / a (只读、只写、追加)
  • r+ / w+ / a+ (读写、写读、追加读【需要配合seek用】)
  • rb / wb / ab (二进制【只读、只写、追加】)
  • r+b / w+b / a+b (二进制 【读写、写读、追加读】)

4.3 操作

  • read() , 全部读到内存

  • read(1)

    • 1表示一个字符

      obj = open('a.txt',mode='r',encoding='utf-8')
      data = obj.read(1) # 1个字符
      obj.close()
      print(data)
      
    • 1表示一个字节

      obj = open('a.txt',mode='rb')
      data = obj.read(3) # 1个字节
      obj.close()
      
  • write(字符串)

    obj = open('a.txt',mode='w',encoding='utf-8')
    obj.write('中文')
    obj.close()
    
  • write(二进制)

    obj = open('a.txt',mode='wb')
    
    # obj.write('中文'.encode('utf-8'))
    v = '中文'.encode('utf-8')
    obj.write(v)
    
    obj.close()
    
  • seek(光标字节位置),无论模式是否带b,都是按照字节进行处理。

    obj = open('a.txt',mode='r',encoding='utf-8')
    obj.seek(10) # 跳转到指定字节位置
    data = obj.read()
    obj.close()
    
    print(data)
    
    
    obj = open('a.txt',mode='rb')
    obj.seek(10) # 跳转到指定字节位置
    data = obj.read()
    obj.close()
    
    print(data)
    
  • tell(), 获取光标当前所在的字节位置

    obj = open('a.txt',mode='rb')
    # obj.seek(10) # 跳转到指定字节位置
    obj.read()
    data = obj.tell()
    print(data)
    obj.close()
    
  • flush,强制将内存中的数据写入到硬盘

    v = open('a.txt',mode='a',encoding='utf-8')
    while True:
        val = input('请输入>>')
        v.write(val)
        v.flush()
    
    v.close()
    

4.4 关闭文件

屌丝版

v = open('a.txt',mode='a',encoding='utf-8')
v.close()

高级进化版

with open('a.txt',mode='a',encoding='utf-8') as v:
    data = v.read()
	# 缩进中的代码执行完毕后,自动关闭文件

4.5 文件内容的修改

with open('a.txt',mode='r',encoding='utf-8') as f1:
    data = f1.read()
new_data = data.replace('灰机','666')

with open('a.txt',mode='w',encoding='utf-8') as f1:
    data = f1.write(new_data)

超大文件修改

f1 = open('a.txt',mode='r',encoding='utf-8')
f2 = open('b.txt',mode='w',encoding='utf-8')

for line in f1:
    new_line = line.replace('奈斯','耐撕')
    f2.write(new_line)
f1.close()
f2.close()
with open('a.txt',mode='r',encoding='utf-8') as f1, open('c.txt',mode='w',encoding='utf-8') as f2:
    for line in f1:
        new_line = line.replace('奈斯','耐撕')
        f2.write(new_line)
posted @ 2019-07-19 16:23  PlayOn  阅读(77)  评论(0编辑  收藏  举报