Python 通过Pexpect在另一个目录中启动程序
我正在编写一个Python脚本,该脚本通过Pexpect模块控制一个C cli程序。 脚本和程序放在不同的目录中。我可以只指定程序的绝对路径,但存在一个问题: 该程序高度依赖于运行它的目录:比如说,如果使用bash运行它,则必须处于它所在的确切目录中,否则它将失败 据我所知,默认情况下,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
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
。这可能是一个“操作顺序”类型的问题