python基礎學習8----文件基本操

  • 2020 年 1 月 19 日
  • 筆記

一.文件的打開,open函數

f = open(file_name,mode)#創建文件對象

打開模式有很多種

  1. 'r': 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。

  2. 'r+': 打開一個文件用於讀寫。文件指針將會放在文件的開頭,但寫入內容會寫到文件內容末尾。

  3. 'w': 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

  4. 'w+': 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

  5. 'a': 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。

  6. 'a+': 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。讀文件時從文件內容的末尾讀,因為文件指針放在文件的結尾。

with open as語句

不必寫f.close(),會自動在末尾關閉文件,即使在文件操作中發生錯誤

with open('/path/to/file', 'r') as f:      print(f.read())

二.文件對象的屬性

  file.closed : 如果文件已被關閉返回true,否則返回false。

  file.mode : 返回被打開文件的訪問模式。

  file.name : 返迴文件的名稱。

三.文件的關閉

file_object.close()

四.文件的讀寫操作

write方法

file_object.write(string)

read方法

file_object.read(count)#count為位元組數,不填則讀到文件末尾

readlines方法用於讀取所有行

file_object.readlines( ) 
#文件內容如下  #12345  #67890  #09876  #54321  p=f.readlines()  print(p)  #輸出為['12345n', '67890n', '09876n', '54321']

五.文件的定位

tell方法

print(file_object.tell())#輸出文件內的當前位置, 即下一次的讀寫會發生在文件開頭多少位元組之後。  #根據編碼的不同,每個漢字所佔的位元組也不同,utf-8中一個漢字佔3個位元組,此處的數量和read函數的參數意義不同,read函數參數中1代表一個字元  #例如以下為文件內容  #這是漢字    print(file_object.read(3))#輸出為這是漢

seek方法

seek(offset ,from)方法改變當前文件的位置。offset變數表示要移動的位元組數。from變數指定開始移動位元組的參考位置。

如果from被設為0,這意味著將文件的開頭作為移動位元組的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那麼該文件的末尾將作為參考位置。

file_object.seek(3)#from參數默認為0

 六.截斷文件

truncate() 方法用於截斷文件,如果指定了可選參數 size,則表示截斷文件為 size 個位元組。 如果沒有指定 size,則從當前位置起截斷;截斷之後 size 後面的所有字元被刪除。

file_object.truncate(size)

七.flush方法

flush() 方法是用來刷新緩衝區的,即將緩衝區中的數據立刻寫入文件,同時清空緩衝區,不需要是被動的等待輸出緩衝區寫入。

一般情況下,文件關閉後會自動刷新緩衝區,但有時你需要在關閉前刷新它,這時就可以使用 flush() 方法。

file_object.flush()

未完待續

Tags: