Python 檔案操作(一)

自動變數發表於2019-01-21

一、注意事項

A.能呼叫方法的一定是物件

B.檔案的操作流程:

  1. 開啟檔案,得到檔案控制程式碼並賦值給一個變數

  2. 通過控制程式碼對檔案進行操作

  3. 關閉檔案

二、操作實現方法

“`
檔名:小雙雙
檔案內容如下:

昨夜寒蟬不住鳴。
驚回千里夢,已三更。
起來獨自繞階行。
人悄悄,簾外月朧明。
白首為功名,舊山鬆飾老,阻歸程。
欲將心事付瑤琴。
知音少,絃斷有誰聽。
“`

1.

1 f = open(`小雙雙`, `r`)
2 print(f.readline().strip())  # 讀取檔案第一行內容
3 
4 # 執行第二次的時候讀取第二行內容,因為第一次讀取完成後自動把游標放到了第一行末尾
5 print(f.readline().strip()) 

>>> 昨夜寒蟬不住鳴。

       驚回千里夢,已三更。

2.

1 f = open(`小雙雙`, `r`)
2 print(f.readlines()) #讀取所有內容,按行放到列表中
3 f.close()

>>> [`昨夜寒蟬不住鳴。
`, `驚回千里夢,已三更。
`, `起來獨自繞階行。
`, `人悄悄,簾外月朧明。
`, 

       `白首為功名,舊山鬆飾老,阻歸程。
`,`欲將心事付瑤琴。
`, `知音少,絃斷有誰聽。`]

3.

1 # 逐行列印檔案內容
2 f = open(`小雙雙`, `r`)
3 
4 for n in f.readlines(): 
5     print(n.strip())
6 f.close()
>>>昨夜寒蟬不住鳴。
   驚回千里夢,已三更。
   起來獨自繞階行。
   人悄悄,簾外月朧明。
   白首為功名,舊山鬆飾老,阻歸程。
   欲將心事付瑤琴。
   知音少,絃斷有誰聽。

4.
 1 # 在第3行後新增一行字串
 2 f = open(`小雙雙`, `r`)
 3 data = f.readlines()
 4 f.close()
 5 number = 0
 6 
 7 for n in data: # 逐行列印檔案內容
 8     if number == 3:
 9         n = ``.join((n.strip(),`
小可愛`)) #字串拼接用.join(),且其只能接收一個引數
10     print(n.strip())
11     number += 1
>>>昨夜寒蟬不住鳴。
   驚回千里夢,已三更。
   起來獨自繞階行。
   人悄悄,簾外月朧明。
   小可愛
   白首為功名,舊山鬆飾老,阻歸程。
   欲將心事付瑤琴。
   知音少,絃斷有誰聽。
5.
1 f = open(`小雙雙`, `r`)
2 
3 print(f.tell())  #顯示游標此時的位置
4 for n in f:  #for內部將f物件做成一個迭代器,用一個取一個
5     print(n.strip())
6 print(f.tell())
>>>0
   昨夜寒蟬不住鳴。
   驚回千里夢,已三更。
   起來獨自繞階行。
   人悄悄,簾外月朧明。
   白首為功名,舊山鬆飾老,阻歸程。
   欲將心事付瑤琴。
   知音少,絃斷有誰聽。
   147

6.
1 f = open(`小雙雙`, `r`)
2 # gbk編碼一箇中文佔兩位
3 print(f.tell())   #顯示游標此時的位置
4 print(f.read(4))
5 print(f.tell())
>>>0
   昨夜寒蟬
   8

7.
1 f = open(`小雙雙`, `r`)
2 # gbk編碼一箇中文佔兩位   
3 print(f.read(4))
4 print(f.tell())#顯示游標此時的位置
5 
6 f.seek(4)   # 調節游標的位置
7 print(f.read(4))
>>>昨夜寒蟬
   8
   寒蟬不住

8.
1 f = open(`小雙雙`, `a`)
2 print(f.isatty()) # 判斷是否與終端裝置相關聯,是返回True

 

1 f = open(`小雙雙`, `a`)
2 
3 #資料截斷,在‘a’模式下擷取原有資料的前6位,在‘w’模式下格式化檔案
4 f.truncate(6) 

9.`a+`  `w+`  `r+`  模式

f = open(`小雙雙`, `w+`)  #w+模式,執行該語句原檔案格式化

print(f.readline())  #所以執行該語句輸出為空

f.write(`小可愛`)    #重新寫入字元
print(f.readline())   #再次讀取還為空,因為上句操作完成後游標移到了最後

f.seek(0)  # 調整游標位置
print(f.readline())

f.close()

 >>>

   小可愛
 1 f = open(`小雙雙`, `r+`)  #r+模式
 2 
 3 print(f.readline())  # 輸出原檔案內容,
 4 
 5 f.write(`小可愛`)    #在原檔案內容的後面接著寫入字元
 6 print(f.readline())  #讀取為空,因為上句寫操作完成後游標移到了最後
 7 
 8 f.seek(0)  # 調整游標位置到0
 9 print(f.readline())
10 
11 f.close()
>>>小可愛

   小可愛小可愛
 1 f = open(`小雙雙`, `a+`)  #a+模式,追加內容;語句執行完游標到最後位置,
 2 
 3 print(f.readline())  # 輸出為空,
 4 
 5 f.write(`小可愛`)    #在原檔案內容的後面追加內容
 6 print(f.readline())  #讀取為空,因為上句寫操作完成後游標移到了最後
 7 
 8 f.seek(0)  # 調整游標位置到0
 9 print(f.readline())  #輸出現有內容
10 
11 f.close()

 >>>

   小可愛小可愛小可愛

三、檔案的安全開啟方式:
1 with open(`小雙雙`, `r`) as f:  # with方式開啟檔案,後面不需要關閉檔案。推薦檔案操作使用with
2 
3 # with同時管理多個檔案物件
4 with open(`小雙雙`, `r`) as f_read, open(`小雙雙`, `w`) as f_write:
5     for line in f_read:
6         f_write.write(line)

 

 

相關文章