我在Ubuntu 12.04操作系统中使用Python 2.7.3。我有一个外部程序说'xyz',其输入是一个文件,两个文件说'abc.dat'和'gef.dat'是它的输出。
当我使用os.system
或subprocess.check_output
或os.popen
时,它们都没有在工作目录中打印输出文件。
我需要这些输出文件进行进一步的计算。
另外,我要继续调用'xyz'程序'n'次,并且每次都必须继续输出'abc.dat'和'gef.dat'。请帮忙。 谢谢
答案 0 :(得分:0)
我无法对你的问题发表评论,因为我的声誉太低了。
如果您使用os.system
或subprocess.check_output
或os.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'像魅力一样工作。
再次感谢大家抽出时间回答我的问题。