命令行在不同文件夹中执行

Vic*_*tor 46 python shell command-line

我正在使用调用在python中调用命令行程序os.system(command).

如何调用此命令传递不同的文件夹以执行?系统调用了吗?或者我应该保存当前文件夹,并在执行后更改还原它.

hyn*_*cer 80

subprocess模块是一个非常好的解决方案.

import subprocess
p = subprocess.Popen([command, argument1,...], cwd=working_directory)
p.wait()
Run Code Online (Sandbox Code Playgroud)

它还有修改环境变量,将输入/输出重定向到调用程序等的参数.


zen*_*poy 10

os.chdir(path)在调用命令之前尝试.

这里:

os.chdir(path)将当前工作目录更改为path.

可用性:Unix,Windows

编辑

这将改变当前的工作目录,你可以通过以下方式获得当前的工作:

os.getcwd()
Run Code Online (Sandbox Code Playgroud)

如果你想保存它并在以后恢复,如果你需要在原始工作目录中做一些工作.

编辑2

在任何情况下,您都应该按照此处的建议移至subprocess(doc).如果你使用's',你可以选择提供参数来指定子进程的工作目录:读取它.subprocessPopencwd

subprocess.Popen(args, bufsize=0, executable=None, stdin=None,
stdout=None, stderr=None, preexec_fn=None, close_fds=False,
shell=False, cwd=None, env=None, universal_newlines=False,
startupinfo=None, creationflags=0)
Run Code Online (Sandbox Code Playgroud)

...

如果cwd不是None,则子节点的当前目录在执行之前将更改为cwd.请注意,在搜索可执行文件时不考虑此目录,因此您无法指定程序相对于cwd的路径.

  • @Victor 阅读编辑...如果你需要`os.system()` 那是唯一的方法。如果你可以考虑转移到 `subprocess` 你就有 `cwd` arg (2认同)