【发布时间】:2017-03-11 20:02:44
【问题描述】:
我有一个循环,我在其中运行已安装的程序,使用
os.system("program + arguments") 将循环中的每个元素作为参数传递给程序。程序的运行时间根据参数而变化,有时需要一秒钟,有时需要几个小时。所以我想在程序花费一个多小时的时候终止程序,然后继续循环中的下一个元素。
我在这里尝试使用第二个答案(因为我无法理解如何使用最佳答案)Python: Run a process and kill it if it doesn't end within one hour 将os.sytem("program+arguments") 替换为subprocess.Popen(["program+arguments"])
但它给出了"No such file or directory error",我确定我正确地传递了参数,你能帮我如何应用这样的解决方案吗?
这是错误信息,
subp = subprocess.Popen(["home/admin/Desktop/molblocks/fragment -i " + OrgDir+"/"+compsmi + " -r "+ RulesPath + " -e -n "+str(FragLength) + " -o " + compsmi + "_frag.txt"])
File "/usr/lib64/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
最好的问候!
【问题讨论】:
-
您可以尝试在不同的线程中生成它,然后终止该线程。
-
显示您尝试执行的命令行。
program+arguments基本上没用。您正在正确调用 popen,但是您传入的任何内容都是错误的,因此“没有这样的文件或目录”。 -
如果是在windows下,你可能忘了引用路径,所以
.popen("c:\program files\blah blah blah"试图执行一个名为c:\program的程序,参数为files\blah blah blah -
@MarcB 我检查了两次路径,它们没问题,它在 linux 下
-
“好吧”并不能帮助我们找出问题所在。显示命令。
标签: python process subprocess