在 Python 中运行 Bash 命令

新手上路,请多包涵

在我的本地机器上,我运行一个包含这一行的 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) 引起)但在该错误之前它会在终端中打印命令。然后我只是复制了该输出并将复制粘贴到终端并按Enter键,它可以工作……

有谁知道发生了什么?

原文由 mkn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 399
1 个回答

不要使用 os.system 。它已被弃用,取而代之的是 subprocess 。来自 文档:“此模块打算替换几个旧模块和功能: os.systemos.spawn ”。

就像你的情况一样:

 import subprocess

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

原文由 user225312 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题