gpt4 book ai didi

python - 在不同目录中执行批处理文件

转载 作者:行者123 更新时间:2023-11-30 22:34:31 25 4
gpt4 key购买 nike

我有一个如下所示的文件结构(Windows):

D:\
dir_1\
batch_1.bat
dir_1a\
batch_2.bat
dir_2\
main.py

对于这个问题,batch_1.bat 只需调用 batch_2.bat,如下所示:

cd dir_1a
start batch_2.bat %*

从命令提示符打开 batch_1.bat 确实会按预期打开 batch_2.bat,从那里开始,一切都是黄金。

现在我希望我的 Python 文件 D:\dir_2\main.py 生成一个启动 batch_1.bat 的新进程,而该进程又应该启动 batch_2.bat。所以我认为下面的 Python 代码应该可以工作:

import subprocess

subprocess.Popen(['cd "D:/dir_1"', "start batch_1.bat"], shell=True)

这会导致“系统找不到指定的路径”被打印到我的 Python 控制台。 (当然,不会引发错误。)这是由于第一个命令造成的。即使我将其缩减为:

,我也会得到相同的结果
subprocess.Popen(['cd "D:/"'], shell=True)

我还尝试直接启动批处理文件,如下所示:

subprocess.Popen("start D:/dir_1/batch_1.bat", shell=True)

由于我不完全明白的原因,这似乎只是在 dir_2 中打开一个 Windows 命令提示符。

如果我放弃此命令的 start 部分,那么我的 Python 进程将最终等待 batch_1 完成,这是我不希望的。但它确实更进一步:

subprocess.Popen("D:/dir_1/batch_1.bat", shell=True)

这会导致 batch_1.bat 在 Python 脚本的目录 dir_2 中成功执行...,而不是在 batch_1.bat< 的目录中,这会导致它无法找到 dir_1a\,因此 batch_2.bat 根本不会执行。

我感到非常困惑。我做错了什么,我应该做什么?

最佳答案

您的问题在这里得到解答:Python specify popen working directory via argument

简而言之,只需将可选的 cwd 参数传递给 Popen:

subprocess.Popen(["batch_1.bat"], shell=True, cwd=r'd:\<your path>\dir1')

关于python - 在不同目录中执行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com