对于现有的文件系统对象,os.path.isfile 总是与 os.path.isdir 相反吗?

Is os.path.isfile always the opposite of os.path.isdir for an existing file system object?

我要用 os.listdir 列出目录中的所有文件和目录,并可靠地区分它们。是否可以只使用 os.path.isdir 并认为它是一个文件,如果它 returns false 或者我应该检查 os.path.isfile 吗?是否存在 os.path.exists(path) and os.path.isdir(path) == os.path.isfile(path) 恰好为真的情况?

os.path.isdir 和 os.path.isfile 都可以! os.path.exists(path) 和 os.path.isdir(path) == os.path.isfile(path) 总是 False

只要使用 os.path.isdir 就应该没问题。这仅查找输入的路径是否为目录。否则,可以假设它是一个文件。我已经测试过,看看是否有 whenos.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\"))

True, True, False

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\"))

False, True, False

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\"))

False, False, False

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

os.path.isdir(path) == os.path.isfile(path) 不应该存在于我所知道的所有磁盘文件系统中,因为这应该意味着同一个对象既是目录又是文件。具体来说EXT4,我的理解是inode既可以是目录也可以是文件。

然而,这两个函数 are not defined as mutually exclusive 需要假设这在所有可能的文件系统中都是正确的,包括未来的文件系统,并且很难预测。