首页 > 解决方案 > 如何使用 python 子进程命令在不同目录中运行 shell 命令?

问题描述

我正在尝试执行一个 shell 命令,例如与我的 python 脚本不同的目录中的“ls”。我在直接从子进程中的 python 代码更改目录时遇到问题。

标签: pythonsubprocess

解决方案


这些subprocess方法都接受cwd关键字参数。

import subprocess

d = subprocess.check_output(
    ['ls'], cwd='/home/you/Desktop')

显然,替换/home/you/Desktop为您想要的实际目录。

大多数编写良好的 shell 命令不需要您在任何特定目录中运行它们,但如果这是您想要的,那么您就是这样做的。

如果这不能解决您的问题,请更新您的问题以包含与您预期不同的实际代码。

(当然,子进程是获取目录列表ls的一种非常糟糕的方法,如果您真的想使用子进程,那么获取目录列表的方法也非常糟糕。os.listdir('/home/you/Desktop')如果这就是您真正想要的,可能会尝试。但我猜测您只是提供ls外部命令的示例。)


推荐阅读