【发布时间】:2021-05-19 02:12:25
【问题描述】:
我正在使用代码在 Linux 终端中通过 python 执行可执行文件。
我在python中使用的代码是
import subprocess
def executable_shell():
# to run cosmo file
x=subprocess.run('cd .. && cd build && ./COSMO', shell=True, capture_output=True)
print(x)
executable_shell()
这里COSMO是我的可执行文件
要运行这个 python 文件,我使用命令:$ python3 file.py
代码正在运行,但显示文件之间没有行间距,就像每个新行都从同一行开始,而不是跳转到新行。
但是如果我从终端以正常方式运行这个可执行文件
$ ./COSMO
我得到了正确的格式。
示例输出:
xxxxx xxxxx xx
期望的输出:
xxxxx
xxxxx
xx
【问题讨论】:
-
在options中使用
text=True,然后访问x.stdout获取返回的字节流。x不是输出,是封装流程管理的对象。 -
这可能是行尾转换问题。为确保这一点,您应该将 COSMO 可执行文件的输出重定向到一个文件,并使用十六进制编辑器检查文件的内容(或使用小型 Python 脚本将内容转储为 hexa)。
-
不确定 COSMO bin 的作用,但请尝试添加到您的打印语句
print("{}\r".format(x))。请记住,subprocess.run()返回一个 CompletedProcess 实例,也就是当capture_output为true标准输出和标准错误将被捕获时已完成的进程
标签: python linux shell subprocess executable