在我的本地机器上,我运行一个包含这一行的python脚本
bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)
Run Code Online (Sandbox Code Playgroud)
这很好用.
然后我在服务器上运行相同的代码,我收到以下错误消息
'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
Run Code Online (Sandbox Code Playgroud)
所以我所做的就是插入一个"print bashCommand",它在使用os.system()运行它之前打印我,而不是终端中的命令.
当然,我再次得到错误(由os.system(bashCommand)引起)但在该错误之前它在终端中打印命令.然后我只是复制了那个输出并在终端上做了一个复制粘贴,然后点击回车就可以了......
有没有人知道发生了什么?
如果我echo a; echo b在bash中运行,结果将是两个命令都运行.但是,如果我使用subprocess,则运行第一个命令,打印出整个行的其余部分.下面的代码是echos a; echo b而不是a b,如何让它运行这两个命令?
import subprocess, shlex
def subprocess_cmd(command):
process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
proc_stdout = process.communicate()[0].strip()
print proc_stdout
subprocess_cmd("echo a; echo b")
Run Code Online (Sandbox Code Playgroud) 我有一个调用python脚本的bash脚本,如下所示:
OUTPUT=$(python /path/path/script.py attr attr attr);
Run Code Online (Sandbox Code Playgroud)
python脚本将返回如下数据列表:
[item1, item2, item3]
Run Code Online (Sandbox Code Playgroud)
如何将$ OUPUT变量(返回python数据列表的字符串)转换为bash数组?
如果可能的话,我想用bash阅读每个项目.