我正在使用PyDev在eclipse中编写一个python项目。 我正面临着一个问题。 这是项目的建设
在breaking_cipher包中的文件中,我得到“english_quadgrams.txt”的绝对路径
def __init__(self,filename="./dic/english_quadgrams.txt"):
self.filename = os.path.abspath(filename)
#self.filename = filename
print "self:", self.filename
self.dic,self.floor = generate_dic(self.filename)
问题是当我导入要在comandline中使用的项目时,它获得了错误的abs目录。 dir应该是“C:\ Users \ windy_000 \ workspace \ cipher \ dic \ english_quadgrams.txt”,但是 错误显示“C:\ Users \ windy_000 \ workspace \ dic \ english_quadgrams.txt”。 我做错了吗?
答案 0 :(得分:1)
相对路径相对于当前工作目录(os.getcwd()
),而不是相对于模块/包文件路径。
如果您希望路径相对于moduel / packages,请使用__file__
:
def __init__(self, filename="./dic/english_quadgrams.txt"):
self.filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), filename)
....