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)始终为Falseos.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"))