python系统属性不一致" __ file __"在不同的Linux发行版上

时间:2016-04-07 02:33:02

标签: python linux operating-system dirname

我正在处理奇怪的问题。考虑一下这个简单的代码:

print(__file__)
print("***" + os.path.dirname(__file__) + "###")

现在,当我在笔记本电脑上运行此代码时,我有Fedora 23操作系统,输出为:

/home/.../ExperimentalSystem/BullshitSetupGenerator.py
***/home/.../ExperimentalSystem###

在Ubuntu 15.10上运行相同的代码:

BullshitSetupGenerator_delete_me.py
***###

任何人都可以解释我为什么?我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

__file__由给Python的参数定义,告诉它你的文件是什么。例如,假设您位于名为Here的文件夹中。您可以说python ../Here/here.py__file__将是../Here/here.py。如果您仅使用python here.py运行同一文件,则__file__here.py。当您在同一目录中运行Python文件而不使用绝对路径或奇怪的相对路径时,该文件将没有提到任何目录。这意味着os.dirname(__file__)将为空。如果需要,可以使用os.path.abspath()获取绝对路径。

答案 1 :(得分:2)

您可能不希望纯粹依赖__file__属性,但确保您拥有完整路径abspath

os.path.dirname(os.path.abspath(__file__))