在 Python 中將列印輸出重定向到檔案

Lakshay Kapoor 2023年1月30日
  1. 在 Python 中使用 write() 函式將輸出列印到檔案
  2. 在 Python 中使用 print() 函式將輸出列印到檔案
  3. 在 Python 中使用 sys.stdout 將輸出列印到檔案
  4. 在 Python 中使用 contextlib.redirect_stdout() 函式將輸出列印到檔案
在 Python 中將列印輸出重定向到檔案

在檔案處理中還有另一種任務可以使用 python 完成,即將輸出重定向到外部檔案。基本上,標準輸出可以列印到使用者自己選擇的檔案中。有很多方法可以執行此操作。

在本教程中,我們將看到一些在 Python 中將輸出重定向到檔案的方法。

在 Python 中使用 write() 函式將輸出列印到檔案

這是一個內建的 Python 函式,可幫助將指定文字寫入或新增到檔案中。wa 是此函式中的 2 個操作,它們將在檔案中寫入或新增任何文字。w 用於當使用者想在檔案中寫入任何內容之前清空檔案時使用。而當使用者只想向檔案中的現有文字新增一些文字時,使用 a

例子:

with open("randomfile.txt", "a") as o:
    o.write("Hello")
    o.write("This text will be added to the file")

請注意,此處使用 open() 函式來開啟檔案。程式碼中的 a 表示文字已新增到檔案中。

在 Python 中使用 print() 函式將輸出列印到檔案

在這個方法中,首先,我們呼叫 open() 函式來開啟所需的檔案。之後 print() 函式用於列印檔案中的文字。使用 w 運算子或 a 運算子始終是使用者的選擇。

例子:

with open("randomfile.txt", "w") as external_file:
    add_text = "This text will be added to the file"
    print(add_text, file=external_file)
    external_file.close()

請注意,在使用 open() 開啟檔案後,close() 函式也用於關閉上述程式碼中的檔案。呼叫 close() 函式後,無法讀取檔案,也無法寫入任何其他內容。如果使用者在呼叫 close() 函式後嘗試對檔案進行任何更改,則會引發錯誤。

在 Python 中使用 sys.stdout 將輸出列印到檔案

sys 模組是一個內建的 Python 模組,使用者使用它來處理 Python 中執行時環境的各個部分。要使用 sys.stdout,需要先匯入 sys 模組。

sys.stdout 用於當使用者希望將輸出直接顯示到螢幕的主控制檯時。輸出的形式可以是多種多樣的,例如,它可以是輸入提示、列印語句或只是一個表示式。在此方法中,我們將在文字檔案中列印一條語句。

例子:

import sys

file_path = "randomfile.txt"
sys.stdout = open(file_path, "w")
print("This text will be added to the file")

注意,在使用 sys.stdout 作為物件開啟和列印文字檔案中的語句之前,必須由使用者定義明確的檔案路徑,否則無法對檔案進行任何操作。

在 Python 中使用 contextlib.redirect_stdout() 函式將輸出列印到檔案

contextlib 模組通常與 with 語句一起使用。

contextlib.redirect_stdout() 函式通過設定上下文管理器幫助將 sys.stdout 臨時重定向到某個檔案。

例子:

import contextlib

file_path = "randomfile.txt"
with open(file_path, "w") as o:
    with contextlib.redirect_stdout(o):
        print("This text will be added to the file")

如你所見,with 語句與 contextlib 模組的操作一起使用。

作者: Lakshay Kapoor
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

相關文章 - Python Print