python - 如何阻止 subprocess.Popen('python path/file.py') 更改文件的工作目录?
问题描述
我在不同的文件夹中有 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
接受工作目录的相对目录),但这并不是一个糟糕的主意。
推荐阅读
- java - 与 Spring 和 Thymeleaf 的注销链接;发布错误
- angular - 茉莉花单元测试“在afterAll中引发了错误”
- dialog - Angular6 Material Dialog防止在按下回车时关闭
- neo4j - Neo4j - 图表数据
- google-oauth - 传递多个域以限制 - 在 Google OAuth 中的“hd”参数中
- c# - 如何在winforms图片框中每次单击鼠标时绘制小字符(x或z)
- python - pyenv 失败:ModuleNotFoundError: No module named '_ctypes' 错误
- php - 在雄辩的 laravel 中具有 AND 条件的产品过滤器
- javascript - 关于继续按钮的 jQuery 问题在多个浏览器选项卡中打开外部链接
- sql - 当 SQL 中只有时间戳可用时导出会话持续时间