os.path.isdir 在文件夹存在时返回假?
我有一段代码,用来检查一个文件夹是否存在。
def download(id, name, bar):
cwd = os.getcwd()
dir = os.path.join(cwd,bar)
partial = os.path.join(cwd, id + ".partial")
print os.path.isdir(dir)
if(os.path.isdir(dir)):
print "dir exists"
dir_match_file(dir, bar)
else:
print dir
对于一个确实存在的文件夹,它却返回了“假”。这是输出结果:
False
/scratch/rists/djiao/Pancancer/RNA-seq/CESC/TCGA-BI-A0VS-01A-11R-A10U-07
当我在Python的交互式环境中输入os.path.isdir("/scratch/rists/djiao/Pancancer/RNA-seq/CESC/TCGA-BI-A0VS-01A-11R-A10U-07")时,它返回了“真”。
为什么当文件夹存在时,它却说是假的呢?
2 个回答
1
我在使用 "~"
来表示Ubuntu上的主目录时遇到了这个问题。通常情况下,使用 "~"
的路径是可以正常工作的,但有时候却不行。我不太明白为什么它并不总是有效。
在这种情况下,解决办法是把路径放在 os.path.expanduser
里,这样就能把 "~"
转换成主目录的绝对路径。
In [1]: import os
In [2]: os.path.isdir("~/Datasets")
Out[2]: True
In [2]: os.path.isdir("~/Datasets/cifar10")
Out[2]: False
In [2]: os.path.isdir(os.path.expanduser("~/Datasets/cifar10"))
Out[2]: True
12
在download
中的dir
后面有空格,而在交互式会话中定义的dir
后面没有空格。这个区别是通过打印repr(dir)
发现的。
In [3]: os.path.isdir('/tmp')
Out[3]: True
In [4]: os.path.isdir('/tmp\n')
Out[4]: False