我运行一个包含此行的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)),但是在该错误出现之前,它会在终端中打印命令。然后我只是复制了输出,然后将复制粘贴到终端中,然后按回车,它就起作用了…
有人知道发生了什么吗?
不要使用os.system。不推荐使用此方法,而推荐使用subprocess。从文档:“此模块旨在取代旧的几个模块和功能:os.system,os.spawn”。
os.system
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()