Python-在Python中运行Bash命令

发布于 2021-02-02 23:23:52

我运行一个包含此行的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)),但是在该错误出现之前,它会在终端中打印命令。然后我只是复制了输出,然后将复制粘贴到终端中,然后按回车,它就起作用了…

有人知道发生了什么吗?

关注者
0
被浏览
265
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    不要使用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()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看