Python 文件操作 – 使用 Python 讀取和寫入文件

在這個教程中,我們將學習 Python 中的不同文件操作。我們將介紹如何使用 Python 讀取文件、寫入文件、刪除文件等等。所以,不延遲,讓我們開始吧。

在 Python 中操作文件

在之前的教程中,我們使用控制台來輸入。現在,我們將使用文件來進行輸入。這意味著,我們將從文件中讀取並寫入文件。為此,我們需要遵循一些步驟。這些步驟包括:

  1. 打開文件
  2. 從文件中獲取輸入 / 將輸出寫入文件
  3. 關閉文件

我們還將學習一些有用的操作,如拷貝文件和刪除文件。

為什麼需要 Python 中的文件操作?

在處理大型數據集時,文件操作是機器學習問題中的基本需求。由於 Python 是數據科學中主要使用的語言,因此您需要熟練掌握 Python 提供的不同文件操作。

所以,讓我們在這裡探索一些 Python 文件操作。

1. 使用 open() 函數在 Python 中打開文件

在 Python 中處理文件的第一步是學會如何打開文件。您可以使用 open() 方法打開文件。

Python 中的 open() 函數接受兩個參數。第一個是文件名,包括完整的路徑,第二個是文件打開模式。

以下是一些常見的文件讀取模式:

  • ‘r’: 這種模式表示文件僅用於讀取
  • ‘w’: 這種模式表示文件僅用於寫入。如果包含該名稱的文件不存在,它將創建一個新文件
  • ‘a’: 這種模式表示該程序的輸出將附加到該文件的先前輸出
  • ‘r+’: 這種模式表示文件將同時用於讀取和寫入

此外,對於 Windows 操作系統,您可以添加 ‘b’ 以以二進制形式訪問文件。這是因為 Windows 區分二進制文本文件和常規文本文件。

假設我們將一個名為 ‘file.txt’ 的文本文件放在與我們的代碼相同的目錄中。現在我們想打開該文件。

然而,open(filename, mode) 函數返回一個文件對象。有了該文件對象,您可以進行進一步的操作。

#directory:   /home/imtiaz/code.py
text_file = open('file.txt','r')

#Another method using full location
text_file2 = open('/home/imtiaz/file.txt','r')
print('First Method')
print(text_file)

print('Second Method')
print(text_file2)

以下代碼的輸出將是

================== RESTART: /home/imtiaz/code.py ==================
First Method

Second Method

>>>

2. Python 中讀寫文件

Python 提供了各種方法來讀寫文件,每個函數的行為都不同。需要注意的一個重要事項是文件操作模式。要讀取文件,您需要以讀取或寫入模式打開文件。而要在 Python 中寫入文件,您需要將文件打開為寫入模式。

以下是 Python 中一些允許您讀寫文件的函數:

  • read() : 此函數讀取整個文件並返回一個字符串
  • readline() : 此函數從文件中讀取行並作為字符串返回。如果多次調用它,它將提取第 n 行。
  • readlines() : 此函數返回一個列表,其中每個元素都是該文件的單行。
  • readlines() : 此函數返回一個列表,其中每個元素都是該文件的單行。
  • write() : 此函數將固定序列的字符寫入文件。
  • writelines() : 此函數將字符串列表寫入文件。
  • append() : 此函數將字符串附加到文件而不是覆蓋文件。

讓我們以一個示例文件“abc.txt”為例,並使用 for循環 從文件中讀取單獨的行:

#打開文件
text_file = open('/Users/pankaj/abc.txt','r')

#獲取行列表
line_list = text_file.readlines();

#對列表中的每一行,打印該行
for line in line_list:
    print(line)

text_file.close() #不要忘記關閉文件

輸出:

現在,我們知道如何在Python中讀取文件,讓我們繼續進行寫操作,使用 writelines() 函數。

#打開文件
text_file = open('/Users/pankaj/file.txt','w')

#初始化一個空列表
word_list= []

#迭代4次
for i in range (1, 5):
    print("Please enter data: ")
    line = input() #輸入
    word_list.append(line) #附加到列表


text_file.writelines(word_list) #向文件中寫入4個單詞

text_file.close() #不要忘記關閉文件

輸出

3. 使用shutil()方法在Python中复制文件

我们可以使用shutil模块在Python中复制文件。该实用程序允许我们在Python中对不同文件执行复制和移动操作。让我们通过一个例子来了解:

import shutil

shutil.copy2('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copy2.txt')

#复制文件的另一种方式

shutil.copyfile('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copyfile.txt')

print("File Copy Done")

4. 使用shutil.os.remove()方法在Python中删除文件

Python的shutil模块提供了remove()方法,用于从文件系统中删除文件。让我们看看如何在Python中执行删除操作。

import shutil
import os

#删除文件的两种方式
shutil.os.remove('/Users/pankaj/abc_copy2.txt')

os.remove('/Users/pankaj/abc_copy2.txt')

5. 使用close()方法在Python中关闭打开的文件

當您在Python中打開文件時,非常重要的是在進行更改後關閉文件。這樣可以保存您之前所做的任何更改,將文件從內存中移除,並防止在程序中進行進一步的讀取或寫入。

在Python中關閉打開的文件的語法:

fileobject.close()

如果我們繼續從之前讀取文件的示例進行,這是如何關閉文件的:

text_file = open('/Users/pankaj/abc.txt','r')
# 在此執行一些文件操作

text_file.close()

此外,如果您使用with語句塊,則可以避免手動關閉文件。一旦執行了with語句塊,文件就會被關閉,並且不再可用於讀取和寫入。

6. Python FileNotFoundError

在Python中使用文件時,經常會收到FileNotFoundError。通過在創建文件對象時提供完整的文件路徑,可以很容易地避免這種情況。

  File "/Users/pankaj/Desktop/string1.py", line 2, in <module>
    text_file = open('/Users/pankaj/Desktop/abc.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: '/Users/pankaj/Desktop/abc.txt'

要修復FileNotFoundError,您只需驗證您為文件打開方法提供的路徑是否正確。

結論

這些是Python上的檔案操作。您可以在Python中使用許多其他方法來使用檔案,包括讀取CSV資料等。這裡有一篇文章介紹如何使用Pandas模組在Python中讀取CSV資料集。

I hope you enjoyed reading the article! Happy learning 🙂

**參考資料:
**
**https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files**

Source:
https://www.digitalocean.com/community/tutorials/python-read-file-open-write-delete-copy