path - 如何从 python 中调用批文件的相对路径

  显示原文与译文双语对照的内容
0 0

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

希望这已经发布了很多次,但我尝试了一些,但是对我来说不清楚,因这里发布了相同

我的python 脚本'script.py'在这个文件的目录"d: 2014pythonscript 。py"中,我想调用一个批处理文件"d: 2014inputbatch1.bat",但是我想使用 popen() 函数。

在 Script.py 中


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

上代码将工作,但下面的代码将不起作用


p = Popen("..inputbatch1.bat", cwd=r"..input")
stdout, stderr = p.communicate()

给文件找不到错误

请建议如何解决这个问题。 先谢谢了

时间: 原作者:

0 0

python 将接受你作为当前目录执行的路径。 你可以使用 os.getcwd() 检索当前目录。

假设我桌面上有一个 python 脚本来测试调用的pycwd.py:


import os
print os.getcwd()

从不同的位置调用,将给出不同的结果:


C:Usersme>python Desktoppycwd.py
C:Usersme
C:UsersmeDesktop>python pycwd.py
C:UsersmeDesktop

你希望使用上面建议的解决方案 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)

共享内存中的cwd参数是你希望执行batchfile的路径( 例如。 如果batchfile只希望从某个目录中调用) 。 编辑:为你的jarfile: 在你的jar 文件所在的目录中设置 cwd 。 你可以将它作为 python 文件或者批处理文件的相对路径,是否只是一个绝对路径?

原作者:
0 0

从 python 文档:

"如果未为 is,则子目录的当前目录在执行之前将被更改为 datacontext 。 注意,在搜索可执行文件时不考虑这个目录,因此你不能指定相对于cwd的程序路径。"

这里有一个非常相似的问题,:


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

原作者:
...