![](/img/trans.png)
[英]Python: os.system() redirecting stdout to file in home directory fails
[英]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.