【发布时间】:2011-04-05 22:03:03
【问题描述】:
我编写了一个 python 程序来与一个已编译的程序(称为 ProgramX)接口,该程序有一些难以处理的特性。我需要通过我的 python 程序将数千个输入文件提供给 ProgramX。我想做的是获取 ProgramX 在每次运行时创建的输出文件,并将其重命名为合理的名称,例如 inputfilename.output。
问题出现在由 ProgramX 写入的输出文件中——它是通过一种不可预测的方法命名的,如果输出文件已经存在,它将写入并“无情地覆盖”输出文件(这是大多数时间)。可取之处可能在于输出文件有一个标准前缀:想想 ProgramX.notQuiteRandomNumber。
我唯一能想到的就是在我的 bash shell 中做这样的事情:
PROGRAMXOUTPUT=$(ls -ltr ProgramX* | tail -n -1 | awk '{print $8}')
mv $PROGRAMXOUTPUT input.output
哪个可以满足我 90% 的需求,但在我将所有 bash 编程为一系列 Popen 语句之前,有没有更好的方法来做到这一点?这个问题感觉就像人们可能有比我想的更好的解决方案。
旁注:我可以毫无问题地抓取程序的标准输出,但这是我需要抓取的输出文件。
奖励:我计划在同一个目录中运行一堆程序的实例化,所以我上面的幼稚方法可能会开始出现无法预料的问题。所以也许有一些花哨的东西可以观察 ProgramX 的 PID 并跟随它的输出。
【问题讨论】: