使用 subprocess 和 git bash 运行一个简单的 ls 命令

Posted

技术标签:

【中文标题】使用 subprocess 和 git bash 运行一个简单的 ls 命令【英文标题】:running a simple ls command with subprocess and git bash 【发布时间】:2019-12-29 14:04:20 【问题描述】:

我正在尝试从 Windows 操作系统内部调用 git bash shell 命令。以下是我的代码 sn-p。谁能告诉我,我做错了什么?

    git_bash_path = WindowsPath(r"c:\Users\abcd\AppData\Local\Programs\Git\git-bash.exe")
    command = "ls"
    subprocess.call([str(git_bash_path), command])

python脚本运行后,会打开一个bash窗口,窗口中的标题为-/usr/bin/bash --login -i ls,在git bash窗口中错误为bash:/usr/bin/ls: cannot execute binary file。

我也试过了——

    subprocess.check_output(command, shell=True, executable=str(git_bash_path)) 

但错误是一样的。

【问题讨论】:

【参考方案1】:

应该使用-c参数:

bashCommand = "ls"
output = subprocess.check_output(['bash','-c', bashCommand])

Git for Windows 带有bash.exe。是is in the %PATH%,应该够了。

【讨论】:

以上是关于使用 subprocess 和 git bash 运行一个简单的 ls 命令的主要内容,如果未能解决你的问题,请参考以下文章

Python subprocess.call 一个 bash 别名

Python:子进程并运行具有多个参数的 bash 脚本

git,git bash和git shell有啥区别

从 python 与 bash 交互

SSH、shell、Xshell 、bash、Git、Git bash 、Git CMD、Git shell

在Python中正确使用subprocess.run()