对于现有文件系统对象,os.path.isfile是否始终与os.path.isdir相反?

时间:2018-11-26 03:36:53

标签: python os.path

我要用os.listdir列出目录中的所有文件和目录,并可靠地区分它们。是否可以只使用os.path.isdir并认为它是文件(如果返回false)还是应该检查os.path.isfileos.path.exists(path) and os.path.isdir(path) == os.path.isfile(path)碰巧是真的吗?

3 个答案:

答案 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要求在所有可能的文件系统(包括将来的文件系统)中都假设这是正确的,并且对此很难进行预测。