所以我在一个目录中运行一个循环,其中一个外部脚本子流程.Popen,正在目录中移动并对每个文件执行计算。外部脚本有点不稳定,当它遇到不知道如何处理的文件时,它偶尔会冻结。有没有办法给子流程.Popen这样我就可以跳过那个文件继续下一个?在
编辑: 这是我的循环:
def automate():
os.chdir("/home/mlts/dir")
working_dir = b"/home/mts/dir"
for filename in os.listdir(working_dir):
if filename.endswith(".MTS"):
try:
print("Performing calculations on {filename!r}...".format(**vars()))
try:
os.remove("mts_tbl.txt")
except OSError:
pass
time.sleep(3)
p = Popen(["run_command.command", "-f", "a"], cwd=working_dir, stdin=PIPE)
p.communicate(input=b"\n".join([b"1", str(filename), b"8", b"alloy-liquid", b"0", b"x", b"5", b"4", b"-1.6", b"4", b"1", b"0"]))
要在python2上强制} :
timeout
(stdlib中不存在.communicate(timeout=)
),可以使用^{完整的例子:
^{pr2}$此代码假定您希望在父Python脚本的当前工作目录中运行子进程。在
在python3上或者如果安装了
subprocess32
,则可以将timeout
参数传递给.communicate()
方法,而不是使用Timer()
。在相关问题 更多 >
编程相关推荐