如何阻止 subprocess.Popen('python path/file.py') 更改文件的工作目录?

How to stop subprocess.Popen('python path/file.py') from changing the working directory of the file?

我在不同的文件夹中有 python 个文件,我正在使用 subprocess.Popen('python path/file.py') 通过外部 python 文件循环执行所有这些文件。 我的问题是:所有这些文件的工作目录正在更改为(运行程序)外部文件的工作目录。我想为每个执行的文件保留旧的工作目录,有什么简单的方法吗? 注意这是我的外部文件的子进程代码: subprocess.Popen('python path/file.py',creationflags=subprocess.CREATE_NEW_CONSOLE)

工作目录没有改变,它保持不变。你的父进程有一个工作目录(它可能与脚本所在的目录相同也可能不同),子进程默认继承它。这就是工作目录的工作方式(它们与脚本所在的位置无关)。

如果您希望工作目录与您正在启动的脚本的路径相匹配,请将该路径作为 cwd 参数传递给 Popen,例如:

subprocess.Popen(['python', 'path/file.py'], cwd=os.path.abspath('path'), creationflags=subprocess.CREATE_NEW_CONSOLE)

os.path.abspath 可能不是必需的(我没有费心检查 subprocess 是否接受工作目录的相对目录),但这样做并不是一个糟糕的主意。