一尘不染

Python-在Python中运行Bash命令

python

我运行一个包含此行的python脚本

bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)

然后,我在服务器上运行相同的代码,并收到以下错误消息

'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/bin/cwm", line 48, in <module>
from swap import  diag
ImportError: No module named swap

因此,我要做的就是print bashCommand在运行之前,在终端中插入一个比命令更清晰的信息os.system()。

当然,我再次收到错误(由引起os.system(bashCommand)),但是在该错误出现之前,它会在终端中打印命令。然后我只是复制了输出,然后将复制粘贴到终端中,然后按回车,它就起作用了…

有人知道发生了什么吗?


阅读 1058

收藏
2020-02-07

共1个答案

一尘不染

不要使用os.system。不推荐使用此方法,而推荐使用subprocess。从文档:“此模块旨在取代旧的几个模块和功能:os.system,os.spawn”

就像你的情况一样:

bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
import subprocess
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
2020-02-07