Python 中的寫入行

Subodh Adhikari 2023年1月30日 2021年10月2日
  1. 在 Python 中使用 write()writelines() 方法將指定文字寫入檔案
  2. 在 Python 中使用 write()writelines() 方法將可迭代物件寫入檔案
Python 中的寫入行

本教程將介紹和解釋 Python 中 write()writelines() 方法之間的區別。

在 Python 中使用 write()writelines() 方法將指定文字寫入檔案

write() 方法需要一個字串作為引數並將其寫入檔案。如果我們提供一個字串列表,它將引發異常。writelines() 方法需要一個可迭代的引數。此外,write() 方法顯示輸出但不提供換行符,而 writelines() 方法顯示輸出並在字串末尾提供換行符。重要的是要注意 writelines() 不會在迭代中的每個專案後自動插入一個新行。我們必須自己提供一條新線路。如果我們有很多行要寫入檔案,writelines() 可能是更好的選擇。它表現良好,因為它不建立臨時連線字串,只是遍歷行。

在下面的程式中,我們以寫模式開啟了檔案 samplefile.txtlines 變數是一個元組,即一個不可變的字串集合。當我們嘗試執行程式時,它引發了異常型別的錯誤。我們提供給 write() 方法的引數是一個導致錯誤的元組。在這裡,我們使用 with 方法進行檔案處理。此方法提供了更好的語法和異常處理。因此,在適用的情況下使用 with 方法是一種很好的做法。該方法很有用,因為任何開啟的檔案都將在完成後關閉。

示例程式碼:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open('samplefile.txt', 'w') as f:
    f.write(lines)

輸出:

TypeError: write() argument must be str, not tuple

在類似的上下文中,當我們使用 writelines() 時,程式會成功執行,並建立一個名為 samplefile.txt 的檔案,其中 lines 作為引數傳遞給 writelines() 方法。

示例程式碼:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open('samplefile.txt', 'w') as f:
    f.writelines(lines)

輸出:

Good
Morning
Sunshine

對於同一個程式,多行連線到一個名為 lines_joined 的字串變數,它很容易被接受為 write() 方法的引數。

示例程式碼:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine" 
lines_joined = line1 + nl + line2 + nl + line3 + nl
with open('samplefile.txt', 'w') as f:
    f.write(lines_joined)

輸出:

Good
Morning
Sunshine

在 Python 中使用 write()writelines() 方法將可迭代物件寫入檔案

join() 方法獲取可迭代物件中的所有專案並將它們連線成一個字串。在下面的程式中,我們使用了 join() 方法和 '\n' 作為粘合劑來連線 lines 中的字串。這是一種更好的串聯方法,而不是使用 + 運算子。

示例程式碼:

# python 3.x
lines = ["Hello", "World"]
with open('hello.txt', 'w') as f:
    f.write('\n'.join(lines))

輸出:

Hello
World

對極長的字串列表使用 join() 方法效率較低。在這種情況下,會在寫入之前在記憶體中建立一個全新的非常長的字串。因此,在下面的程式中,我們使用生成器表示式將字串寫入換行符。在這裡,資料是分段寫入的。

示例程式碼:

# python 3.x
lines = ["Hello", "World"]
with open('hello.txt', 'w') as f:
    for l in lines:
        f.write('%s\n' % l)

輸出:

Hello
World

與上面相同的程式是通過 writelines() 方法實現的。它使用生成器表示式並動態建立以換行符結尾的字串。writelines() 方法迭代這個字串序列並寫入每個專案。

示例程式碼:

# python 3.x 
lines = ["Hello", "World"]
with open('hello.txt', 'w') as file:
    file.writelines("%s\n" % t for t in texts)

輸出:

Hello
World

相關文章 - Python File