檔案的操作要注意路徑的問題,這裡用的都是相對路徑。
# 檔案操作 r:寫模式,w:讀模式,建立新文件覆蓋原來的文件# f=open('a.txt','r',encoding='utf-8')
# # data=f.read()
# # print(data)
# # 可讀檔案,預設是可讀檔案,readline是讀檔案第幾行
# print(f.readable())
# print('第一行:',f.readline(),end='') # end=''表示取消換行
# print('第二行:',f.readlines())
# f=open('b','w',encoding='utf-8')
# f.write('111111111111\n')
# f.write('2222222222222\n')
# f.writelines(['第五行\n','第六行\n']) # 以列表的形式寫入檔案
# f.close()
# 追加模式,一般在日誌檔案用的多
# f=open('b','a',encoding='utf-8')
# f.write('寫到檔案最後')
# f.close()
# 讀寫模式 寫的時候只從游標的位置往後寫
# f=open('b','r+',encoding='utf-8')
# print(f.read())
# f.write('離離原上草')
# print(f.read())
# 只往新檔案裡寫一行
# src_f=open('b','r',encoding='utf-8')
# data=src_f.readlines()
# src_f.close()
# dst_f=open('b_new','w',encoding='utf-8')
# dst_f.write(data[0])
# dst_f.close()
# 使用with可以不用close語句
# with open('b','w') as f:
# f.write('1111\n')
# with open('a.txt','r',encoding='utf-8') as src_f,\
# open('b','r',encoding='utf-8') as dst_f:
# print(src_f.read())
# print(dst_f.read())
# 以位元組方式操作檔案 後面不需要編碼方式
# f=open('a.txt','rb')
# data=f.read()
# print(data)
# # 沒有編碼方式還想看到內容進行解碼
# print(data.decode('utf-8'))
# 寫位元組檔案時,要對字串進行編碼
# f=open('a_new','wb')
# f.write(bytes('11111111\n',encoding='utf-8'))
# f.write('小狗'.encode('utf-8'))
# f=open('b','r+',encoding='latin-1')
# data=f.read()
# print(data)
# python會在最後加乙個/r,用newline來讀取檔案換行符號 seek用來控制游標的移動
# f=open('a.txt','r+',encoding='utf-8',newline='')
# print(f.readline())
# print(f.tell())
# # 把游標往後移動三個位元組
# f.seek(3)
# print(f.tell())
# # 從游標往後的四個字元
# print(f.read(4))
# 使用f.truncate(10)來擷取檔案,擷取的是位元組,不是字元
# seek方法的使用,最好用b的方式開啟檔案
# f = open('a.txt','rb')
# print(f.tell())
# # 2代表倒敘seek,倒敘seek10個字元,對於處理日誌檔案經常用
# f.seek(-15,2)
# print(f.read())
# print(f.tell())
# # seek是從開頭部分開始的
# f.seek(3)
# print(f.tell())
# # seek還能設定從哪開始到哪結束
# f.seek(3,1)
# print(f.tell())
# 迴圈檔案內容,一次只迴圈一行
f=open('日誌檔案','rb')在實際的應用程式開發過程中,日誌檔案的資料量可能會特變大,如果還是從頭開始會導致讀取時間過長,所以只能從檔案的最末端往前讀,我們往往想讀取的是日誌檔案的最後幾行操作,那麼如何獲取日誌檔案最後一行操作呢:for i in f:
print(i)
f=open('日誌檔案','rb')
for i in f:
# 定義一次的偏移量
offs=-50
while true:
f.seek(offs,2)
data=f.readlines()
if len(data) > 1:
# data[-1]:取出最後一行
print('檔案的最後一行是%s' %(data[-1].decode('utf-8')))
break
offs*=2
在迴圈體中,定義一次的偏移量,這裡的偏移量是指位元組,f.seek(offs,2)表明從檔案的末尾開始迴圈,data取出一次偏移量所讀取的行數,如果讀取的行數大於1行,則取出最後一行,並用utf-8編碼格式進行解碼,並且終止迴圈;如果一次偏移量所讀取的行數不大於1行,則增加偏移量offs*=2,繼續迴圈讀取,直到行數大於1行為止。檔案內容如下所示:
輸出結果:
python學習(九) 檔案操作
1 檔案開啟 1.開啟檔案,得到檔案控制代碼並賦值給乙個變數 f open a.txt r encoding utf 8 預設開啟模式就為r open預設編碼為gbk r,w,a 2.通過控制代碼對檔案進行操作 data f.read 3.關閉檔案 f.close 1 讀取 f.readable 是...
python學習11 檔案操作
1.檔案 open file,mode r buffering 1,encoding none,errors none,newline none,closefd true,opener none file 檔案路徑 其中雙斜槓表示轉義也可以用反斜槓代替這兩個斜槓。mode 開啟方式 其中 w表示先將...
Python學習筆記 四 檔案操作
讀取鍵盤輸入 buf raw input please input your name buf raw input 開啟檔案 如果hello.txt不存在 fp open hello.txt w w是說建立這個檔案,以寫的方式開啟 fp.write text fp.close 如果hello.txt...