簡體   English   中英

為什么打開文件需要變量

[英]Why a variable is required to open files

我有一點概念問題。 為了寫入文件“to_file”,這有效:

out_file = open(to_file, 'w')
out_file.write(indata)

......但這不是:

(open(to_file, 'w')).write(indata)

理論上,不應該換掉變量(out_file)定義的變量本身會產生相同的結果嗎? 我很困惑為什么創建變量的額外步驟是必要的。

正如其他人指出的那樣,您的代碼實際上會打開並寫入文件。 然而,...

在第二個單行代碼中,您現在沒有引用打開的文件。 因此,您無法關閉它或使用它做任何其他事情。

保持文件打開是資源泄漏。 如果您的程序立即關閉,Python將嘗試在結束之前關閉該文件。 但由於各種原因,Python可能會失敗。 例如,在您寫入文件之后但程序結束之前,可能會刪除包含該文件的可移動磁盤驅動器。 這可能會使可移動驅動器上的文件無法讀取 - 我已經看到了這種情況。 如果你的程序沒有立即關閉,你就會有這個額外的資源,它需要內存和其他不需要的資源。 如果您的程序持續很長時間,不斷增長的資源可能會減慢或停止計算機。

即使你的程序馬上關閉,這也是一個不好的習慣。 您不僅想編寫程序,還希望編寫能夠在各種情況下正常運行的代碼。 您可能會想“我永遠不會在長期運行的程序中使用此代碼。” 這種聲明經常被證明是錯誤的。 編碼很難 - 不要讓自己變得更難。 避免你的第二個例子的“反模式”。

Python中有一個更好的模式用於使用with語句 閱讀該鏈接並使用該模式而不是兩個示例中的任何一個。

with open(to_file, 'w') as out_file:
    out_file.write(indata)

這兩行打開文件,將數據寫入文件,然后關閉文件。 如果要在文件關閉之前對文件執行更多操作,請將該代碼放在with語句下的縮進部分中。

在Python 2.7中,您提供的兩個示例都將工作並寫入該文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM