我正在尝试编写一个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