如何从python调用批处理文件的相对路径

2024-10-01 10:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从python调用批处理文件的相对路径?在

我的python脚本'脚本.py'在目录“d:\2014\python”中\脚本.py" 在这个文件中,我想将一个批处理文件称为“d:\2014\input\batch1.bat”,但我想使用带有popen()函数的相对路径。在

在脚本.py在

import os, sys
from subprocess import Popen
p = Popen("D:\\2014\\input\\batch1.bat", cwd=r"D:\\2014\\input")
stdout, stderr = p.communicate()

上面的代码可以工作,但是下面的代码将不工作

^{pr2}$

给出“找不到文件”错误


Tags: 文件函数代码frompyimport目录脚本
2条回答

Python将从中执行的路径作为当前目录。您可以使用检索当前目录操作系统getcwd(). 在

我在桌面上调用了一个python测试脚本pycwd.py公司公司名称:

import os
print os.getcwd()

从不同的地方调用,会得到不同的结果:

^{2}$

您应该使用SiHa建议的解决方案:

path_to_directory_of_this_python_file = os.path.dirname(__file__)
path_to_your_batch_file = os.path.join(path_directory_of_this_python_file, '..', 'input', 'batch1.bat')
p = Popen(path_to_your_batch_file)

Popen中的cwd参数是执行批处理文件的路径(例如,如果只从某个目录调用批处理文件)。 编辑:那么对于您的jarfile:将popen中的cwd设置为jar文件所在的目录。您可以将它作为python文件或批处理文件的相对路径,还是只提供绝对路径?在

从pythondocs

“如果cwd不是None,则子目录在执行之前将被更改为cwd。请注意,搜索可执行文件时不考虑此目录,因此不能指定程序相对于cwd的路径。”

有人提出了一个非常相似的问题here,请尝试:

[...]
fn = os.path.join(os.path.dirname(__file__), "..\\input\\batch1.bat")
p = Popen(fn, cwd=r"D:\\2014\\input")
[...]

相关问题 更多 >