簡體   English   中英

Python3:os.system 不重定向標准輸出

[英]Python3: os.system not redirecting stdout

如標題所述。 我的代碼中有這個:

os.system("./vpr/vpr " + config + " " + file_name + " --seed " + str(seed) + " &> " + str(bench_name) + "-" + str(seed) + ".stdout")

它有很多變量,但它只是簡單地評估為這個(我肯定知道,因為我在os.system行之前有一個打印語句):

./vpr/vpr vpr/k6_N10_40nm.xml vpr/blif/clma.blif --seed 0 &> clma-0.stdout

該命令實際上運行良好,但重定向沒有! 文件clma-0.stdout被創建但仍然是空的,我仍然在我的終端上獲得整個標准輸出。

什么是解決方案? 我究竟做錯了什么? 我在 Ubuntu 19.10 上使用 python-3.7

謝謝。

我不確定為什么會這樣,但似乎os.system使用的是 Dash(Ubuntu 的默認腳本外殼),而不是 Bash,因此不支持&> 相反,命令是后台運行的,並且文件被截斷。 command &> filename等價於command &; > filename command &; > filename

要修復它,您可以簡單地使用等效的重定向> filename 2>&1

我認為這是因為您正在嘗試使用系統命令來執行此操作,而不是使用支持這些 I/O 重定向標志的 Bash。

試試這個shell=True https://docs.python.org/2/library/subprocess.html#subprocess.call

暫無
暫無

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

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