【Python基礎】文件操作
阿新 • • 發佈:2019-05-13
操作文件 center spl 查看 補充 -a col ble none
補充:"""需求:讀取幾萬行日誌文件的最後一行
文件操作
- 一 文件操作
- 二 打開文件的模式
- 三 操作文件的方法
- 四 文件內光標移動
- 五 文件的修改
參考:http://www.cnblogs.com/linhaifeng/articles/5984922.html#_label28
"""文件 讀 r 操作"""
f=open(‘陳粒‘,encoding=‘utf-8‘) data=f.read() print(data) f.close() f=open(‘xxx‘) data=f.read() print(data) f=open(‘陳粒‘,‘r‘,encoding=‘utf-8‘) data讀文件=f.read() # print(data) print(f.readable()) print(‘第1行‘,f.readline(),end=‘‘) print(‘第2行‘,f.readline()) print(‘第3行‘,f.readline()) # for i in range(1): # pass print(‘第4行‘,f.readline()) print(‘第5行‘,f.readline()) print(‘第6行‘,f.readline()) print(‘第7行‘,f.readline()) data=f.readlines() print(data) f.close()
""" 文件 寫 w 操作 """
f=open(‘陳粒1‘,‘w‘,encoding=‘utf8‘) # f.read() f.write(‘11111111\n‘) f.write(‘222222222\n‘) f.write(‘333\n4444\n555\n‘) # f.writable() f.writelines([‘555\n‘,‘6666\n‘]) f.writelines([‘555\n‘,‘6666\n‘,1]) # 文件內容只能是字符串,只能寫字符串 f.close()寫文件
"""文件 追加 a 操作"""
f=open(‘陳粒1‘,‘a‘,encoding=‘utf-8‘) f.write(‘追加方式寫到文件最後‘)追加寫操作
"+" 表示可以同時讀寫某個文件
r+, 讀寫【可讀,可寫】
w+,寫讀【可讀,可寫】
a+, 寫讀【可讀,可寫】
"""文件修改"""
src_f=open(‘xxx‘,‘r‘,encoding=‘gbk‘) data=src_f.readlines() src_f.close() # for i in data: # print(i) print(data) dst_f=open(‘xxx‘,‘w‘,encoding=‘gbk‘) # dst_f.writelines(data) dst_f.write(data[0]) dst_f.close() with open(‘a.txt‘,‘w‘) as f: f.write(‘1111\n‘) src_f=open(‘xxx‘,‘r‘,encoding=‘gbk‘) dst_f=open(‘xxx‘,‘w‘,encoding=‘gbk‘)修改文件
"""以 with 方式打開多個文件"""
with open(‘xxx‘,‘r‘,encoding=‘gbk‘) as src_f, open(‘xxx_new‘,‘w‘,encoding=‘gbk‘) as dst_f: data=src_f.read() dst_f.write(data) f=open(‘a.txt‘) print(f.encoding) #查看文件編碼View Code
"""以 bytes(二進制)方式打開文件"""
f=open(‘test11.py‘,‘rb‘,encoding=‘utf-8‘) #b的方式不能指定編碼 f=open(‘test11.py‘,‘rb‘) #b的方式不能指定編碼 data=f.read() #‘字符串‘---------encode---------》bytes #bytes---------decode---------》‘字符串‘ print(data) print(data.decode(‘utf-8‘)) f.close() f=open(‘test22.py‘,‘wb‘) #b的方式不能指定編碼 f.write(bytes(‘1111\n‘,encoding=‘utf-8‘)) f.write(‘中國‘.encode(‘utf-8‘)) f=open(‘test22.py‘,‘ab‘) #b的方式不能指定編碼 f.write(‘中國‘.encode(‘utf-8‘)) open(‘a.ltxt‘,‘wt‘)View Code
補充:"""需求:讀取幾萬行日誌文件的最後一行
f.readlines() 直接全部讀出來放在內存中 很耗內存空間
"""
# f=open(‘日誌文件‘,‘rb‘) # data=f.readlines() # print(data[-1].decode(‘utf-8‘)) f=open(‘日誌文件‘,‘rb‘) # for i in f.readlines(): # print(i) #循環文件的推薦方式,以行為單位讀取,取一行用一行 不全部放在內存中 # for i in f: # print(i) for i in f: offs=-10 while True: f.seek(offs,2) data=f.readlines() if len(data) > 1: print(‘文件的最後一行是%s‘ %(data[-1].decode(‘utf-8‘))) break offs*=2View Code
【Python基礎】文件操作