os.path.dirname(__file__) 返回空值
我想获取当前目录的路径,也就是执行.py文件时所在的文件夹。
比如说,有一个简单的文件 D:\test.py
,里面的代码是:
import os
print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)
奇怪的是,输出结果是:
D:\
test.py
D:\test.py
EMPTY
我本来希望 getcwd()
和 path.dirname()
的结果是一样的。
既然 os.path.abspath = os.path.dirname + os.path.basename
,那为什么
os.path.dirname(__file__)
会返回空值呢?
8 个回答
10
os.path.split(os.path.realpath(__file__))[0]
os.path.realpath(__file__)
会返回当前脚本的绝对路径;而 os.path.split(abspath)[0]
则会返回当前目录。
13
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者数据不完整。这就像是你想把水倒进一个小瓶子,但水桶里的水太多,瓶子装不下。
为了避免这些问题,我们可以使用一些工具和方法来确保数据的质量和格式是正确的。这样,我们就能顺利地把数据从一个地方转移到另一个地方,而不会出现错误。
总之,处理数据就像是搬运东西,我们需要确保每一步都做得正确,这样才能顺利完成任务。
import os.path
dirname = os.path.dirname(__file__) or '.'
296
因为 os.path.abspath = os.path.dirname + os.path.basename
这个等式是不成立的,所以我们更倾向于这样理解。
os.path.dirname(filename) + os.path.basename(filename) == filename
其实 dirname()
和 basename()
这两个函数只是把你传入的文件名分成几个部分,并没有考虑到当前的目录。如果你想要考虑当前目录,就得明确地去做。
如果你想获取绝对路径的目录名,可以使用:
os.path.dirname(os.path.abspath(__file__))