1. 程式人生 > >11 python初學 (檔案)

11 python初學 (檔案)

對檔案的操作分為 3 步:

  1. 開啟檔案;
    f = open('望月懷古', 'r', encoding='utf8')   # 路徑可以寫絕對路徑,也可以寫相對路徑;
  2. 操作
  3. 關閉檔案; f.close()

只讀模式:r

f = open('望月懷古', 'r', encoding='utf8')
data = f.read(5)   # 讀取 5 個字元: 1 個漢字和 1 個 英文字母都算是 1 個字元
print(data)
f.close()

寫模式:w。 

# w:寫操作。 在 f 物件被建立的時候就會將原來的檔案清空,重新寫操作。
# 如果沒有該檔案,則先會自動建立一個,在進行寫入 f = open('望月懷古1', 'w', encoding='utf8') f.write('望月懷古') f.write(' 張九齡') # 會緊跟在上一句之後寫入。 f.close()

在檔案後繼續新增:a

# a:append 直接在檔案後面追加
f = open('望月懷古1', 'a', encoding='utf8')
print(f.fileno())   # 列印檔案控制代碼
f.write('\nHello world')
f.close()

檔案操作方法:

1. readline()

# 讀取一行資料。 讀取一行後,游標移動了,如果檔案沒有被關閉,下次會從游標處繼續讀
f = open('望月懷古', 'r', encoding='utf8')
f.readline()

2. readlines()

print(f.readlines())  # 讀取所有行,放進一個列表中輸出

# readlines 讀取出來的列表會被放進記憶體中進行儲存,因此當檔案很大時並不建議使用此方法。使用 for i in f,即可對每一行做輸出
f = open('望月懷古', 'r', encoding='utf8')
# for i in f.readlines():   不建議使用
for i in f: print(i.strip()) f.close()

3. tell() :得到當前游標位置

f = open('望月懷古', 'r', encoding='utf8')
print(f.tell())
f.read(7)
print(f.tell())

>>> 0
>>> 7

# 如果是英文字元,則讀取 7 個後,當前游標位置是 7
# 如果是中文字元,讀取 7 個後,當前游標位置是 21.因為一箇中文佔 3 個字元

4. seek():調節當前游標位置

#hello world
#
f = open('望月懷古', 'r', encoding='utf8')
print(f.tell())
print(f.read(7))
print(f.tell())

f.seek(0)  # 調節當前游標位置到0,從當前位置開始列印
print(f.read(4))

>>> 0
>>> hello w
>>> 7
>>> hell    # 又從游標 0 的地方開始輸出

 5. flush() :把快取裡的資料儲存到磁盤裡區

f.flush()

6.