在下面的代碼中,我將創建一個臨時文件,然後在此臨時文件中保存一個txt文件的全部內容。這只是一個例子。我知道讀取文本文件並將其寫入臨時文件是沒有意義的。但我想展示我的問題。Python:read()有更好的方法嗎?
那麼當我使用read()metod,這意味着臨時文件的全部內容保存在RAM內存中,對嗎?我無法控制臨時文件的內容大小。所以我考慮是否有更好的方法來保護RAM內存。我不想淹沒RAM內存。
# Use the TemporaryFile context manager for easy clean-up
with tempfile.TemporaryFile(delete=True) as tmp:
with open('filename.txt', 'r') as my_file:
for line in my_file:
tmp.write(line)
tmp.seek(0)
exec(tmp.read())
該代碼與文字描述不符。你的實際任務是什麼?你是否想要將一個文本文件作爲Python代碼執行(用代碼中的exec(tmp.read())'來判斷)還是要將一個文本文件的內容逐行復制到另一個文本文件中'代碼中的line in file:output_file.write(line)')。你真正的問題是什麼? – jfs
@ J.F. Sebastian;你是對的。我想將一個文本文件作爲Python代碼執行。在這種情況下,代碼保存在文本文件中。但稍後我會將文本文件保存在Web服務器上。我的程序訪問文本文件,將其保存在臨時文件中,然後執行它。 – Sophus
那麼你爲什麼要擔心RAM?你在微控制器上運行它嗎?有多少內存可用?你不害怕從互聯網上運行任意代碼,但你擔心代碼太多?代碼做了什麼?一次運行一行(具有明確的名稱空間)是否有意義?如果您正在從網絡讀取數據;無論出於何種原因,你可以隨時停止。 – jfs