我正在嘗試編寫一個Python腳本來從多個目錄中的bash中遞歸運行一個程序,並在日誌文件中保存(現在只是顯示)輸出。從特定目錄中的python腳本運行bash命令
問題是,當我試圖從主目錄運行該應用程序,只是給它的輸入文件的完整路徑崩潰,所以我通常直接在包含輸入文件的目錄中運行它。我試圖用os.popen()和pexpect來做到這一點,但我認爲這裏最合適的就是子進程。
我的代碼:
import subprocess,
from subprocess import Popen, PIPE
subprocess.Popen("$fp "+pcr+" "+dat, cwd=path+dirs[0], stdout=PIPE)
print output.stdout.read()
其中PCR和DAT輸入文件的名稱。
當我嘗試運行它,我得到以下錯誤:
Traceback (most recent call last):
File "file_ed.py", line 47, in <module>
subprocess.Popen("$fp "+pcr+" "+dat, cwd=retval, stdout=PIPE)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
可能是什麼這個問題的原因,以及如何解決它?
您正在嘗試訪問文件或運行不存在的命令。例如,可能沒有命令'$ fp'。有關在子進程中使用環境變量的信息,請參見[此問題](http://stackoverflow.com/questions/26643719/python-exporting-environment-variables-in-subprocess-popen)。 –
運行一系列bash命令的最好方法是編寫一個bash腳本來完成它。你的方法是艱難的。 – msw