python 文件夹存在时,os.path.isdir返回false?

alen0pnh  于 2023-11-16  发布在  Python
关注(0)|答案(2)|浏览(127)

我有下面的代码来检查目录是否存在

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”。下面是输出:

False
/scratch/rists/djiao/Pancancer/RNA-seq/CESC/TCGA-BI-A0VS-01A-11R-A10U-07


当我进入python交互式会话并输入os.path.isdir(“/scratch/rists/djiao/Pancancancer/RNA-seq/CESC/TCGA-BI-A0 VS-01 A-11 R-A10 U-07”)时,它返回“true”。
为什么文件夹存在时显示false?

khbbv19g

khbbv19g1#

download中的dir在末尾有空白,而交互式会话中定义的dir没有。通过打印repr(dir)发现了差异。

In [3]: os.path.isdir('/tmp')
Out[3]: True

In [4]: os.path.isdir('/tmp\n')
Out[4]: False

字符串

2vuwiymt

2vuwiymt2#

我在Ubuntu上使用"~"引用一个目录来表示主目录时遇到了这个问题。通常,当保持它为"~"时,路径工作,但有时它不工作。我不知道为什么它不总是工作。
在这种情况下,解决方案是将路径 Package 在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

字符串

相关问题