我已經編寫了一個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並遵循它的輸出。