首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3: os.system没有重定向stdout

Python3: os.system没有重定向stdout
EN

Stack Overflow用户
提问于 2019-12-15 00:59:36
回答 2查看 396关注 0票数 3

正如标题中提到的。我的代码中有这样的内容:

代码语言:javascript
复制
os.system("./vpr/vpr " + config + " " + file_name + " --seed " + str(seed) + " &> " + str(bench_name) + "-" + str(seed) + ".stdout")

它有很多变量,但是它只是简单地计算到这一点(我肯定知道,因为我在os.system行前面有一个print语句):

代码语言:javascript
复制
./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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-15 01:45:52

我认为这是因为您使用的是系统命令,而不是支持这些I/O重定向标志的Bash。

shell=True https://docs.python.org/2/library/subprocess.html#subprocess.call试试这个

票数 3
EN

Stack Overflow用户

发布于 2019-12-15 02:00:20

我不知道为什么,但似乎os.system使用的是Dash (Ubuntu的默认脚本外壳),而不是Bash,因此不支持&>。相反,所发生的情况是命令是背靠背的,并且文件被截断。也就是说,command &> filename等同于command &; > filename

要修复它,只需使用等效的重定向,> filename 2>&1

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59340422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档