在 Python 中运行 Bash 命令
在服务器上的 Python 脚本中运行 Bash 命令时,即使是相同的代码,也可能会遇到错误在本地工作。造成这种情况的一个常见原因是操作系统调用 Bash 的方式不同。
了解 Bash
在 Python 中,您可以使用 subprocess 模块运行 Bash 命令。但是,默认行为是使用 /bin/sh,这是一个最小的 shell,不支持 Bash 的所有功能。如果您需要特定于 Bash 的语法,则必须显式指定 Bash 可执行文件为:
subprocess.run(command, shell=True, executable='/bin/bash')
Shell 与 No Shell
您可以调用 subprocess.run( )与 shell=True 或 shell=False。使用 shell=True,您可以提供 shell 解析的单个字符串命令。使用 shell=False,您可以将字符串参数列表传递给可执行文件,而无需使用 shell。
使用 shell=False 可以避免 shell 功能,但需要将命令精确解析为参数。 shlex.split() 函数可以对此提供帮助。
subprocess.run(shlex.split(command)) # shell=False
文本解码
默认情况下,子进程输出以字节形式提供。要将其解码为 Unicode 字符串,请使用 text=True。
subprocess.run(command, shell=True, text=True)
故障排除
如果仍然遇到错误,请务必检查:
以上是为什么我的 Bash 命令在服务器上的 Python 中失败,但在本地却可以工作?的详细内容。更多信息请关注PHP中文网其他相关文章!