正如标题中提到的。我的代码中有这样的内容:
os.system("./vpr/vpr " + config + " " + file_name + " --seed " + str(seed) + " &> " + str(bench_name) + "-" + str(seed) + ".stdout")它有很多变量,但是它只是简单地计算到这一点(我肯定知道,因为我在os.system行前面有一个print语句):
./vpr/vpr vpr/k6_N10_40nm.xml vpr/blif/clma.blif --seed 0 &> clma-0.stdout该命令实际上运行良好,但重定向不运行!文件clma-0.stdout被创建,但仍然是空的,并且我仍然在我的终端上得到整个stdout。
解决这个问题的办法是什么?我做错了什么?我在Ubuntu 19.10上使用python-3.7
谢谢。
发布于 2019-12-15 01:45:52
我认为这是因为您使用的是系统命令,而不是支持这些I/O重定向标志的Bash。
用shell=True https://docs.python.org/2/library/subprocess.html#subprocess.call试试这个
发布于 2019-12-15 02:00:20
我不知道为什么,但似乎os.system使用的是Dash (Ubuntu的默认脚本外壳),而不是Bash,因此不支持&>。相反,所发生的情况是命令是背靠背的,并且文件被截断。也就是说,command &> filename等同于command &; > filename。
要修复它,只需使用等效的重定向,> filename 2>&1。
https://stackoverflow.com/questions/59340422
复制相似问题