[英]Saving live output to file in python
這需要花整整一天的時間來弄清楚為什么它不起作用。 這是Python 3.6。
目標是從命令行捕獲進度,以示例為例。 切細將逐行輸出進度。
使用Python子進程時,似乎無法將任何輸出保存到文件中。 我這樣做:
cmd_str="sudo shred -v /dev/sde"
f="/test.log"
with Popen(cmd_str, stdout=f, bufsize=1, universal_newlines=True) as p:
for line in p.stdout:
print(line, end='')
但是它生成了一個錯誤消息:FileNotFoundError:[Errno 2]沒有這樣的文件或目錄:'sudo shred -v / dev / sde':'sudo shred -v / dev / sde'對我來說毫無意義。
簡而言之,我希望將新的輸出行附加到文件並關閉它。 這樣,外部程序可以檢查日志文件以查看進度。
我只是觀察到,當我使用tee來查看它是否正在記錄日志時,即使創建了日志文件,它也未記錄到文件中。
更新:我已經嘗試了該站點中所有可能的解決方案,但沒有任何效果。 我開始考慮是否與進度條無法發送到stdout有關? 這些已嘗試但仍無法正常工作:
絕對建議拆分令牌,您可能需要使用shell=True
來獲取sudo
:
cmd_str="sudo shred -v /dev/sde"
f="/test.log"
with Popen(cmd_str.split(), shell=True, stdout=open(f, 'w'), bufsize=1, universal_newlines=True) as p:
for line in p.stdout:
print(line, end='')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.