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

Python 对于现有文件系统对象,os.path.isfile是否始终与os.path.isdir相反?,python,os.path,Python,Os.path,我要用os.listdir列出目录中的所有文件和目录,并可靠地将它们区分开来。只使用 OS.PATIO.ISDIR 是否可以,如果它返回false,那么它是一个文件,还是应该检查 OS.Posi.ISFiels?当os.path.exists(path)和os.path.isdir(path)=os.path.isfile(path)恰好为真时,是否存在这种情况?os.path.isdir和os.path.isfile都正常!os.path.exists(path)和os.path.isdir(

我要用
os.listdir
列出目录中的所有文件和目录,并可靠地将它们区分开来。只使用<代码> OS.PATIO.ISDIR 是否可以,如果它返回false,那么它是一个文件,还是应该检查<代码> OS.Posi.ISFiels?当os.path.exists(path)和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和os.path.isfile都正常!os.path.exists(path)和os.path.isdir(path)=os.path.isfile(path)始终为False

只要使用
os.path.isdir就可以了。这仅在输入的路径是目录时查找。否则,可以假定它是一个文件。我已经测试过,看看是否有任何情况下,
os.path.exists(path)和os.path.isdir(path)==os.path.isfile(path)
以下是结果

print(os.path.isdir(“C:\\Users\\Kobe Thompson\\Desktop\\Test\”)
打印(os.path.exists(“C:\\Users\\Kobe Thompson\\Desktop\\Test\\”)
打印(os.path.isfile(“C:\\Users\\Kobe Thompson\\Desktop\\Test\\”)

真,真,假

假,真,假

假,假,假

假,假,假,


正如您所看到的,有些情况下,os.path.isdir和os.path.exists都可以与os.path.isfile相关联

只要使用
os.path.isdir
。这仅在输入的路径是目录时查找。否则,可以假定它是一个文件。我已经测试过,看看是否有任何情况下,
os.path.exists(path)和os.path.isdir(path)==os.path.isfile(path)
以下是结果

print(os.path.isdir(“C:\\Users\\Kobe Thompson\\Desktop\\Test\”)
打印(os.path.exists(“C:\\Users\\Kobe Thompson\\Desktop\\Test\\”)
打印(os.path.isfile(“C:\\Users\\Kobe Thompson\\Desktop\\Test\\”)

真,真,假

假,真,假

假,假,假

假,假,假,

正如您所看到的,在某些情况下,os.path.isdir和os.path.exists都可以与os.path.isfile相关联,因为这意味着在我所知道的所有磁盘文件系统中,同一个对象都是dir和文件。具体来说,我的理解是inode可以是目录或文件

但是,这两个函数需要假设在所有可能的文件系统(包括未来的文件系统)中都是如此,并且对此的预测很难实现。

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


但是,这两个函数需要假设在所有可能的文件系统(包括未来的文件系统)中都是如此,并且很难对此做出预测。

根据您的操作系统和文件系统,可能不仅仅是文件和目录。@klauds。这就是我问的原因。有任何例子吗?例如,在Linux上,您有设备、套接字、命名管道……根据您的操作系统和文件系统,可能不仅仅是文件和目录。这就是我问的原因。有任何示例吗?例如,在Linux上,您有设备、套接字、命名管道……可能出现的异常情况有哪些?如果您在
os.listdir('directory')
的输出中应用
filename.lower()。因为,在Ubuntu(16.04.4)中,你可以做像
mkdir-Wtf;触摸wtf
在同一目录中…可能出现的异常情况有哪些?如果在
os.listdir('directory')
的输出中应用
filename.lower()。因为,在Ubuntu(16.04.4)中,你可以做像
mkdir-Wtf;触摸wtf在同一目录中。。。
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"))