使用python从外部程序获取输出文件

时间:2015-02-13 13:49:12

标签: python output

我在Ubuntu 12.04操作系统中使用Python 2.7.3。我有一个外部程序说'xyz',其输入是一个文件,两个文件说'abc.dat'和'gef.dat'是它的输出。

当我使用os.systemsubprocess.check_outputos.popen时,它们都没有在工作目录中打印输出文件。 我需要这些输出文件进行进一步的计算。

另外,我要继续调用'xyz'程序'n'次,并且每次都必须继续输出'abc.dat'和'gef.dat'。请帮忙。 谢谢

3 个答案:

答案 0 :(得分:0)

我无法对你的问题发表评论,因为我的声誉太低了。

如果您使用os.systemsubprocess.check_outputos.popen,您将获得xyz程序的标准输出(如果它在屏幕上打印了某些内容)。要查看某个目录中的文件,可以使用os.listdir()。然后您可以在脚本中使用这些文件。使用subprocess.check_call也可能值得。 可能还有其他更好,更有效的解决方案。

答案 1 :(得分:0)

首先,直接运行你在python脚本中调用的程序,看看它是否生成了这两个文件。

假设确实如此,问题出在您的python脚本中。尝试使用subprocess.Popen,然后拨打communicate()

以下是一个例子:

from subprocess import Popen

p = Popen(["xyz",])
p.communicate()

communicate等待进程终止。在p.communicate()之后执行代码时,您应该能够获取输出文件。

答案 2 :(得分:0)

感谢您回答我的问题,但我的问题的答案是 -

导入子流程 subprocess.call(" / path / to / software / xyz abc.dat",shell = True)

给了我想要的输出。

我尝试了与子进程相关的命令但是它们返回了错误"没有这样的文件或目录"。 ' shell = True'像魅力一样工作。

再次感谢大家抽出时间回答我的问题。