簡體   English   中英

在Python中重定向打印:val = print(arg)輸出混合可迭代到文件

[英]Redirect print in Python: val = print(arg) to output mixed iterable to file

因此,可以說我有一個令人難以置信的列表/字典嵌套迭代。 我想將它們盡可能容易地打印到文件中。 為什么我不能僅將打印重定向到文件?

val = print(arg)獲取SyntaxError。

有沒有辦法訪問stdinput?

為何打印會永久占用大量字符串? 對於輸出大量字符串而言,我這一邊的編程很差,但是調試卻很快速,這不是利用交互式提示的優勢嗎?

還有一種比我的抱怨更簡單的方法。 蜂巢有答案嗎?

您可以查看Python的日志記錄模塊。 在這種情況下,也許這是完美的搭配。

看到您如何使用print as function時, 文檔顯示您可以像這樣重定向到文件

print(arg, file=open('fname', 'w'))

在Python 3.* ,要將一個print調用重定向到一個打開的文件對象destination

print(arg, file=destination)

在Python 2.* ,其中print是一條語句,其語法為

print>>destination, arg

我想您正在使用2.*因為在3.*分配print的結果不是語法錯誤(它只是無用的,因為該結果為None ,但允許)。 2.* print是一個語句 ,而不是一個函數,因此您提供的代碼片段確實是語法錯誤。

我不確定任務應該指的是什么。 如果要重定向一個或多個print語句(或調用)以將格式化的結果作為內存中的字符串獲取,則可以將sys.stdout設置為StringIO (或cStringIO )實例; 但是您特別提到“到文件”,因此我對該分配的預期含義感到困惑。 請澄清?

通常,您不使用print來寫入文件(盡管從技術上講可以)。 您將為此使用文件對象。

with open(filename, 'w') as f:
    f.write(repr(your_thingy))

如果print花費大量時間顯示大量字符串,那可能不是完全print的錯,而是必須將所有內容顯示在屏幕上的結果。

我嘗試使用python 2.7都沒有成功的兩個示例

首先,我使用記事本在C:\\ goat.text中創建了一個文件

接下來我嘗試了以下

導入系統

打印>>“ C:\\ goat.txt”,“測試”錯誤AttributeError:'str'對象沒有屬性'write'

print(“ test”,file = open('C:\\ goat.txt','w'))

語法錯誤:(“輸入'='處沒有可行的選擇”,('C:\\ Users \\ mike \\ AppData \\ Local \\ Temp \\ sikuli-tmp5165417708161227735.py',3,18,'print(“ test”,file = open (\\'C:\\\\ goat.txt \\',\\'w \\'))\\ n'))

我嘗試了多種變體,但無法解決此問題。

暫無
暫無

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

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