我运行一个包含此行的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”
。
就像你的情况一样:
bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
import subprocess
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
问题内容: 有没有办法从Python运行BASH内置命令? 我试过了: 及其许多变化。我想跑步还是。 问题答案: 我终于找到了可行的解决方案。 谢谢大家的投入。
我有下面的课。它允许我通过java执行命令。 当我运行命令时,上一个命令的结果没有保存。例如: 给出输出: 为什么第二个“ls”命令不显示“bin”目录的内容?
基本上,我在gitbash命令行中键入,然后返回一个空行,好像命令行正在思考。。。 我做了大量的研究,但似乎无法通过在命令行中键入python在GitBash上运行python。 我看到的问题是:Python在git bash的命令行中不起作用,有人建议键入: 进入命令行,它工作了!但是,我不想一直在命令行中输入整个命令。
如果我在windows的命令行上执行我的python脚本,它运行得很好,但是当我在bash上运行它时,它只是一直在等待另一行,但是如果我尝试其他命令,比如,它会显示:
Python不能在git bash(Windows)中运行。当我在命令行中键入python时,它会将我带到一个空行,而没有像在PowerShell中那样说明它已经输入了python 2.7.10。它不会给我错误消息,但python就是不运行。
问题内容: 我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件, 为了实现这一点,我正在插入文件 在文件末尾,我放入 问题是当它调用第一个命令时,它将终止脚本, 提前感谢我如何做这项工作的任何建议 问题答案: 问题在于,直到退出产生的外壳程序才返回,这时您的Python脚本将恢复。 执行所需操作的最简单方法是使用Python脚本作为参数来调用自身。代替 您将