我有一个与python脚本或函数的目录有关的问题。我给出以下示例来说明我的问题:假设现在我们有一个名为build_module.py
的python文件,它位于:
C:/a/b/c/d/build_module.py
在这个文件中,我定义了一个名为build_module的函数:
def build_module(par1, par2)
pwd_original = os.path.dirname(os.path.realpath(__file__)) # first call
print pwd_original
os.chdir(pwd_original)
print os.getcwd()
pwd_original = os.path.dirname(os.path.realpath(__file__)) #second call
print pwd_original
quit()
在我第一次调用pwd_original = os.path.dirname(os.path.realpath(__file__)) # first cal
时,我希望返回路径应该是C:/a/b/c/d
,因为这是fie所在的文件夹,但是,我得到的是C:/a/b/c
。所以这是我的第一个问题,为什么我无法获取文件的文件夹?如果os.path.dirname(os.path.realpath(__file__))
不是我应该调用的正确函数,我应该调用哪种函数?
调用os.chdir
后,第二次调用pwd_original = os.path.dirname(os.path.realpath(__file__)) #second call
,返回路径变为'C:/ a / b',我期望的是它应该与之前的调用相同。所以发生了什么事?
修改
提到我如何调用该函数的方式。我将使用的脚本位于
C:/a/b/c/d/app/main.py
只是提醒您build_module.py位于C:/a/b/c/d/build_module.py
。因此,如果我想调用build_module.py中的函数,我必须在此文件中的导入函数之前添加sys.path.insert(0,"../")
。
如果我把它们放在同一个文件夹中,那么我就不会有这个问题了。
答案 0 :(得分:0)
我刚刚复制了你的代码并进行了一些修改并运行了它,它打印了三次脚本文件所在的目录。结果与你的不同。
文件位于D:\ PycharmProjects \ PyDev中,输出为
D:\PycharmProjects\PyDev
D:\PycharmProjects\PyDev
D:\PycharmProjects\PyDev
import os
def build_module(par1, par2):
pwd_original = os.path.dirname(os.path.realpath(__file__)) # first call
print(pwd_original)
os.chdir(pwd_original)
print(os.getcwd())
pwd_original = os.path.dirname(os.path.realpath(__file__)) #second call
print (pwd_original)
build_module(1,2)