Python 通过Pexpect在另一个目录中启动程序

Python 通过Pexpect在另一个目录中启动程序,python,bash,pexpect,Python,Bash,Pexpect,我正在编写一个Python脚本,该脚本通过Pexpect模块控制一个C cli程序。 脚本和程序放在不同的目录中。我可以只指定程序的绝对路径,但存在一个问题: 该程序高度依赖于运行它的目录:比如说,如果使用bash运行它,则必须处于它所在的确切目录中,否则它将失败 据我所知,默认情况下,pexpect.spawn()将运行它的目录视为模拟shell的“当前目录” 除了把脚本和程序放在一起,我还能做些什么来让它工作呢 顺便说一句,Python是2.7.6,pexpect==3.3,bash she

我正在编写一个Python脚本,该脚本通过Pexpect模块控制一个C cli程序。 脚本和程序放在不同的目录中。我可以只指定程序的绝对路径,但存在一个问题:

该程序高度依赖于运行它的目录:比如说,如果使用bash运行它,则必须处于它所在的确切目录中,否则它将失败

据我所知,默认情况下,
pexpect.spawn()
将运行它的目录视为模拟shell的“当前目录”

除了把脚本和程序放在一起,我还能做些什么来让它工作呢

顺便说一句,Python是2.7.6,pexpect==3.3,bash shell接受一个
cwd
参数,您能将其设置为所需的目录吗

pexpect.spawn(<cmd>, cwd="<path>")
peexpect.spawn(,cwd=”“)

根据,
spawn
有一个
cwd
参数,您可能会得到您想要的。但在文档中找不到它。谢谢大家!@伊戈尔,你可以在这里看到,我还有一个问题。你的建议似乎很管用,但并不总是如此。我在从不同目录生成自己的cli程序时遇到问题。当从不同的目录运行时,我得到
pexpect.ExceptionPexpect:未找到该命令或该命令不可执行:./helloworld.
,而不考虑cwdparameters@Egor作为另一个问题问这个问题可能更好,如果你能试着缩小“做”和“不做”的范围。虽然我没有验证过,
spawn
可能正在使用当前环境查找要调用的命令,但是修改了该进程的环境,使其具有适当的
cwd
。这可能是一个“操作顺序”类型的问题