abspath()以__file__作为输入

时间:2014-09-05 01:33:40

标签: python

从阅读stackoverflow,我发现__file__是加载模块的文件的路径名,如果它是从文件加载的

这行代码有什么理由吗?

os.path.abspath(__file__)

文档说明

os.path.abspath(path)
Return a normalized absolutized version of the pathname path.

abspath()在这种情况下会提供任何值吗?

1 个答案:

答案 0 :(得分:4)

我确信它会为希望了解代码运行路径,没有符号链接,pathname/../otherpath奇怪或abspath()解决的其他问题的人提供价值。另请参阅os.path.normpath()的文档。可以想象这两者是不同的。

值得注意的是,这可能与os.path.realpath()不同,后者返回“指定文件名的规范路径,消除了路径中遇到的任何符号链接(如果操作系统支持它们)。”

有趣的结果:在我的OS X系统上,我的~/Dropbox层次结构中的文件夹(位于我的标准文件系统中)符号链接到~/Library/Application Support中的另一个文件夹为Sublime Text提供插件文件。当我从Sublime运行测试程序时,我得到以下结果:

__file__           = /Users/MattDMo/Dropbox/Sublime/ST3_Mac/Packages/tk_test.py
abspath(__file__)  = /Users/MattDMo/Dropbox/Sublime/ST3_Mac/Packages/tk_test.py
realpath(__file__) = /Users/MattDMo/Library/Application Support/Sublime Text 3/Packages/tk_test.py

但是,从终端(~Library/Application Support/Sublime Text 3/Packages内)运行会产生:

__file__           = tk_test.py
abspath(__file__)  = /Users/MattDMo/Library/Application Support/Sublime Text 3/Packages/tk_test.py
realpath(__file__) = /Users/MattDMo/Library/Application Support/Sublime Text 3/Packages/tk_test.py

将终端中的目录更改为~/Dropbox/Sublime/ST3_Mac/Packages对结果没有任何影响。很有意思......