pexpect调用git中cd目录问题解决

当前需要python调用git命令自动执行pull操作。因为git还需要输入密码,所以使用到pexpect模块。
最初写法

>>> import pexpect
>>> p = pexpect.spawn('cd /home/simonzhang/test/&& git pull ')

但是pexpect不能使用cd命令,报错如下:
pexpect.ExceptionPexpect: The command was not found or was not executable: cd.

只能先切换到相应目录中,然后在执行。修改代码如下,执行成功。

>>> import pexpect
>>> import os
>>> os.chdir('/home/simonzhang/test/')
>>> p = pexpect.spawn('git pull')

还有一点学习。cd为shell自带的命令,当用which和whereis查找时都会报找不到,因为命令是按照系统的PATH变量设置路径进行搜索。用type cd则显示cd为shell buildin命令。pexpect调用时并不加载shell,导致了该问题。

发表评论

电子邮件地址不会被公开。 必填项已用*标注