我正在尝试以编程方式执行以下命令:
~$ obabel -:"ccco" -O /home/user/output.png
obabel是一个化学库,基本上如果“”中的字符串是完整的,它将无法生成PNG文件,如果它是合法的化学结构,将生成PNG文件。这在候机楼有效。你知道吗
但是,如果我用Python调用同一个命令,PNG文件会为完全无意义的输入字符串生成,当命令在终端中执行时,这些字符串不会生成PNG。你知道吗
我使用这样的子流程:
cmd = 'obabel -:"ccco" -O /home/user/output.png'
proc = sub.Popen([cmd], shell=True, stderr=sub.PIPE)
res = proc.communicate()
我也试过:
os.system(cmd)
试过Python2和Python3。从终端或iPython运行脚本时会发生这种情况。你知道吗
我也尝试过用C++来运行CMD:
std::string cmd = "obabel -:\"ccco\" -O /home/user/output.png";
system(cmd.c_str());
默认情况下
Popen
需要字符串参数列表,但是如果传递shell=True
,则可以将命令作为简单字符串提供(它将在shell中执行)。当前,您正在传入一个包含整个命令的字符串的列表,您可以使用以下任一选项:用引号转义SMILES字符串似乎是为了保护它不受shell的影响,直接传递输入时不需要它(否则
"
字符将成为字符串的一部分,并导致无效语法)。你知道吗相关问题 更多 >
编程相关推荐