我已经编写了一个python程序来与一个已编译的程序(称为ProgramX)进行交互,该程序有一些难以处理的特性。我需要通过我的python程序将数千个输入文件提供给ProgramX。我想要做的是获取每次运行时由ProgramX创建的输出文件,并将其重命名为inputfilename.output。从Python Popen进程中抓取输出文件?
问题出现在由ProgramX编写的输出文件中 - 它是通过一种不可预知的方法命名的,它将写入输出文件并“无情地覆盖”它(如果已经存在)的时间)。节约宽限可能伴随着输出文件有一个标准前缀的事实:think ProgramX.notQuiteRandomNumber。
唯一想我能想到做的就是这样的事情在我的bash shell:
PROGRAMXOUTPUT=$(ls -ltr ProgramX* | tail -n -1 | awk '{print $8}')
mv $PROGRAMXOUTPUT input.output
这确实90%的我需要什么,但在此之前我编程一切庆典为一系列POPEN语句, 有一个更好的方法吗?这个问题感觉像人们可能会有比我想象的更好的解决方案。
旁注:我可以抓住程序的标准输出没有问题,但它是我需要抓取的输出文件。
奖励:我打算在同一个目录下运行一堆程序实例,所以我上面的天真方法可能会出现无法预料的问题。因此,也许有些幻想看到ProgramX的PID并遵循它的输出。