我要用os.listdir
列出目录中的所有文件和目录,并可靠地区分它们。是否可以只使用os.path.isdir
并认为它是文件(如果返回false)还是应该检查os.path.isfile
? os.path.exists(path) and os.path.isdir(path) == os.path.isfile(path)
碰巧是真的吗?
答案 0 :(得分:1)
os.path.isdir和os.path.isfile都可以! os.path.exists(path)和os.path.isdir(path)== os.path.isfile(path)始终为False
答案 1 :(得分:1)
仅使用os.path.isdir
应该很好。仅在输入的路径是目录的情况下查找。否则,可以假定它是一个文件。我已经测试过,看看何时os.path.exists(path) and os.path.isdir(path) == os.path.isfile(path)
的情况如下:
print(os.path.isdir("C:\\Users\\Kobe Thompson\\Desktop\\Test\\"))
print(os.path.exists("C:\\Users\\Kobe Thompson\\Desktop\\Test\\"))
print(os.path.isfile("C:\\Users\\Kobe Thompson\\Desktop\\Test\\"))
正确,正确,错误
print(os.path.isdir("C:\\Users\\Kobe Thompson\\Desktop\\Test\\test"))
print(os.path.exists("C:\\Users\\Kobe Thompson\\Desktop\\Test\\"))
print(os.path.isfile("C:\\Users\\Kobe Thompson\\Desktop\\Test\\"))
错误,正确,错误
print(os.path.isdir("C:\\Users\\Kobe Thompson\\Desktop\\Test\\test"))
print(os.path.exists("C:\\Users\\Kobe Thompson\\Desktop\\Test\\test"))
print(os.path.isfile("C:\\Users\\Kobe Thompson\\Desktop\\Test\\"))
错误,错误,错误
print(os.path.isdir("C:\\Users\\Kobe Thompson\\Desktop\\Test\\test"))
print(os.path.exists("C:\\Users\\Kobe Thompson\\Desktop\\Test\\test"))
print(os.path.isfile("C:\\Users\\Kobe Thompson\\Desktop\\Test\\test"))
错误,错误,错误
您可以看到,有些情况下os.path.isdir和os.path.exists都等于os.path.isfile
答案 2 :(得分:0)
os.path.isdir(path) == os.path.isfile(path)
永远不要保存在我所知道的所有磁盘文件系统中,因为这意味着同一对象既是目录又是文件。特别是对于EXT4,据我了解,索引节点可以是目录也可以是文件。
但是,这两个函数are not defined as mutually exclusive要求在所有可能的文件系统(包括将来的文件系统)中都假设这是正确的,并且对此很难进行预测。