使用Python對檔案(File)進行讀寫操作等的相關操作:Read, Write, Exists

Table of Contents

Table of Contents

介紹使用Python3對檔案(file)的操作方式。

  • 檔案的讀寫(read, write)
  • 取得檔案夾內的檔案列表
  • 檔案名稱的變更
  • 檔案是否存在的判斷


檔案的讀寫(read, write)

在Python中,檔案分為 text , binary 兩種型態。 當需要開啟檔案做讀寫操作時,可以用open函數來達成目的。

file = open("file_path", "mode")

...(讀寫操作)

file.close()

按照上述方法,可以用open函數來開啟檔案。最後,不要忘了用close函數來關閉檔案。

mode的部分,可以設定以下的值來決定操作限制。

  • 'r' : read。閱覽模式。若檔案不存在則產生error。
  • 'w' : write。編輯模式。若檔案不存在則產生新檔案。
  • 'a' : append。在檔案內容尾端添加新內容模式。若檔案不存在則產生新檔案。
  • 'r+' : read + write。閱覽與編輯模式。
  • 'x' : create。創建新檔案,若檔案已經存在則產生error。


Write

對檔案進行編輯。

file = open('/path_to_file/file_name', 'r')

file.write("寫下第一行")
file.write("寫下第二行")
file.write("這是第三行")

file.close()

手動關閉已開啟的檔案時可以用close函數。

一般建議搭配使用with方式,當處理完畢後會自動幫你關閉檔案。
範例如下:

with open('/path_to_file/file_name', 'w') as file:
    file.write("寫下第一行")
    file.write("寫下第二行")
    file.write("這是第三行")


Read

讀取檔案內容。

file = open('/path_to_file/file_name', 'r')

# 輸出檔案全部內容
print(file.read())

# 輸出開頭到第五行的檔案內容
print(file.read(5))

# 輸出第一行的檔案內容
print(file.readline())

# 輸出第一行中第三個文字為止的檔案內容
print(file.readline(3))

# 輸出檔案內容中每一行的內容所構成的矩陣。
print(file.readlines())
# > ['寫下第一行', '寫下第二行', '這是第三行']

file.close()

在文字檔案的應用上,常常會有對每一行進行資料分析的需求。這時可以用下面方式,


with open(path) as f:
  for line in f:
    print(line) // 列印出文字內容
    print(len(line)) // 列印出文字長度
    // ...其他的分析操作,像是置換文字...等

在迴圈中,需要知道目前在分析第幾筆資料時,可以使用enumerate函數。

with open(path) as f:
  for index, line in enumerate(f):
    print(index) // 列印出index內容
    print(line) // 列印出文字內容
    // ...其他的分析操作,像是置換文字...等


取得檔案夾內的檔案列表

使用os或是glob的模組,可以快速地取得檔案列表。

os模組:取得檔案列表

列出指定path下的檔案。 listdir函數

import os

list = os.listdir("path")
print(list)


glob模組:取得檔案列表

import glob

files = glob.glob('path/*.txt')
print(files)

glob函數的話,因可以使用萬用字元,所以能做出條件刪選,像是指定檔案的類型。



檔案名稱的變更

使用os模組的rename函數可以更改檔案的名稱。

import os

# os.rename('/path/original_file_name.type', '/path/new_file_name.type')
os.rename('/tmp/user.txt', '/tmp/customer.txt')



檔案是否存在的判斷

使用open函數或是os模組可以確認檔案是否存在。

open函數:確認檔案是否存在

try:
    with open('file_name') as f:
        print(f.readlines())
except IOError
    print("檔案無法開啟")


os模組:確認檔案是否存在

使用os.path可以確認路徑是否存在,是否為檔案或是檔案夾。

  • os.path.exists(path) : 返回true/false
  • os.path.isfile(path) : 返回true/false
  • os.path.isdir(path) : 返回true/false
import os

os.path.exist('/path/of/file')