社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python3:os.system未重定向stdout

ProWi • 5 年前 • 1554 次点击  

如标题所述。我的密码里有这个:

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 被创建但仍然为空,并且我仍然在终端上获得整个stdout。

解决办法是什么?我做错什么了? 我在Ubuntu 19.10上使用python-3.7

谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51271
 
1554 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Alexandr Shurigin
Reply   •   1 楼
Alexandr Shurigin    5 年前

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

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

wjandrea
Reply   •   2 楼
wjandrea    5 年前

我不知道为什么,但看起来 os.system 使用的是Dash(Ubuntu的默认脚本shell),而不是Bash,所以 &> 不支持。相反,会发生的情况是命令被反接地,文件被截断。也就是说, command &> filename 相当于 command &; > filename .

> filename 2>&1 .