【发布时间】:2016-04-19 22:50:25
【问题描述】:
我使用 Gaussian,这是一个用于分子几何优化的程序,以及其他应用程序。 Gaussian 可能需要几天时间才能结束一次优化,所以我决定在 Python 上编写一个程序,以便在它完成运行时向我发送一封电子邮件。电子邮件发送我想通了。问题是 Gaussian 自动生成了一个 log 文件和一个 chk 文件,里面包含了过程的实际结果,并且通过使用subprocess.call(['command'], shell=False) 两个文件都没有生成。
我也试过用os.system(command)解决这个问题,给了我.log文件和.chk文件,但是没有等待优化完成就发送了邮件。
另一件重要的事情,我必须在后台运行整个进程,因为正如我在开始时所说的,可能需要几天时间才能结束,而且我不能让终端打开那么久。
【问题讨论】:
-
保持终端打开可以通过
screen实现。您需要从磁盘读取生成的文件并将它们包含在您的报告电子邮件中。日志文件的生成不依赖于调用方法。 -
好吧,我设法解决了这个问题,我一直在寻找答案,我的错误很明显。要在终端上运行 Gaussian,我使用
$ g09 input.com &,所以它在 bg 中运行。这就是我在subprocess.call(['command']和os.system(command)上使用的命令。问题是&,不知何故os.system()不会等待进程以它结束。通过不使用&,它成功了。 (还是不能用subprocess.call())
标签: python subprocess os.system