我有一个像这样的命令旋转一些计算并将一些输出存储在一个文件夹中。所以,我有这个命令适用于bash命令(在Ubuntu中)。
/home/usr2/AXE/prog1.exe -k 1 -m /home/usr2/AXE/config.txt
但是,我想在python程序中“调用”它。
最后的想法是在python中生成许多这种性质的串行进程。
/home/usr2/AXE/prog1.exe -k 1 -m /home/usr2/AXE/config.txt
/home/usr2/AXE/prog1.exe -k 2 -m /home/usr2/AXE/config.txt
/home/usr2/AXE/prog1.exe -k 3 -m /home/usr2/AXE/config.txt
...
...
/home/usr2/AXE/prog1.exe -k 2000 -m /home/usr2/AXE/config.txt
import os
os.system('"/home/usr2/AXE/prog1.exe -k 1 -m /home/usr2/AXE/config.txt"')
这为我提供了Out[11]: 32512
的命令行输出,但输出文件不会在必需文件夹中生成。
我做错了什么?
P.S。不知道Bash编程。但也会对Bash解决方案感兴趣。
答案 0 :(得分:0)
直接问题似乎是引号过多。 os.system
接受包含您要执行的命令的字符串。因此,要执行shell命令echo hello
,您可以从Python调用os.system('echo hello')
。调用os.system('"echo hello"')
尝试执行shell命令"echo hello"
;换句话说,它会在PATH
中查找名为echo hello
的单个可执行文件,这可能不存在,当然也不是您想要的。所以摆脱一套报价。任何一个都没问题,因为Python对单引号和双引号都是一样的。
您也可以尝试将os.system
替换为subprocess.run
替换标准库。您可以传递一系列字符串,而不是包含该命令的单个字符串,每个字符串都是您要运行的shell命令中的一个标记。因此,在我们的示例中,您可以执行subprocess.run(('echo', 'hello'))
。 os.system
函数或多或少已弃用,有利于subprocess.run
。