【发布时间】:2018-12-14 09:00:53
【问题描述】:
我对 Python 比较陌生,一直在尝试用它运行一个 .cmd 文件,但它不会从正确的位置运行它。我的文件 Run_setup.cmd 正在使用一堆相关文件设置另一个不同的软件,因此为了我的理智,我已将它们隔离到自己的文件夹中。
目前我可以让 .cmd 文件从与我的源代码相同的位置运行。根据文档的内容,我知道我用 cwd=r'%s' 弄乱了它的文件路径,但我不明白怎么做。
如果 cwd 不是 None,该函数会在执行子进程之前将工作目录更改为 cwd。 cwd 可以是 str 和类似路径的对象。特别是,如果可执行路径是相对路径,该函数会查找相对于 cwd 的可执行文件(或 args 中的第一项)。
我目前使用基于this post 的 cwd=r' C:\LargeFolder\Files\CorrectFolder',它似乎适用于任何文件路径,但我不能似乎让它对我有用。
from subprocess import Popen
def runCmdfile():
# File Path to source code: 'C:\LargeFolder\Files'
myDir = os.getcwd()
# File Path to .cmd file: 'C:\LargeFolder\Files\CorrectFolder'
myDir = myDir + '\CorrectFolder'
runThis = Popen('Run_setup.cmd', cwd=r'%s' % myDir)
stdout, stderr = runThis.communicate()
我在这里缺少什么,以及使用 cwd=r' ' 的目的是什么?
【问题讨论】:
-
os.getcwd()不是源代码所在目录。 -
cwd=r' '这是一个原始字符串,请参阅 (docs.python.org/3/reference/lexical_analysis.html)
标签: python batch-file subprocess popen