0

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

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

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

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

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

BullshitSetupGenerator_delete_me.py
***###

谁能解释我为什么?我错过了什么吗?

4

2 回答 2

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().

于 2016-04-07T02:40:03.313 回答
2

您可能不想完全依赖该__file__属性,但要确保您拥有完整的路径abspath

os.path.dirname(os.path.abspath(__file__))
于 2016-04-07T02:39:28.923 回答