python學習之七 檔案的操作

2021-08-29 13:44:49 字數 3238 閱讀 1589

檔案的操作要注意路徑的問題,這裡用的都是相對路徑。

# 檔案操作 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...