os.path模块文件目录判断
1、背景描述
Python中的os模块提供了与操作系统交互的功能。它允许你访问文件系统、执行系统命令、管理进程和环境变量等,是Python的标准库
其中os.path
模块的exists()、isfile()、isdir()
主要用于判断路径是否存在、路径是否是文件、路径是否是目录
但有时候os.path
模块的isfile()、isdir()
可能会“失效”,例如:
print(os.path.isfile("path/a.txt")) # False
print(os.path.isdir("path/a")) # False
这是怎么回事呢?不能吧,os可是Python的标准库啊
2、os.path模块isfile()和isdir()的正确用法
在Python中,如果一个路径实际上不存在,那么我们无法直接通过os.path
模块的isfile()
或isdir()
函数来判断这个路径是文件路径还是文件夹路径,此时两个函数都会返回False。像上面那样
如果实际路径存在,例如:
print(os.path.isfile(r"C:\Users\cc\Desktop\a.txt")) # True
print(os.path.isdir(r"C:\Users\cc\Desktop\a")) # True
已经存在的绝对路径对os.path
模块的isfile()
和isdir()
函数才会真正起作用
os.path
模块的exists()方法可用于判断给定的路径是否存在
print(os.path.exists("path/a.txt")) # False
print(os.path.exists("path/a")) # False
print(os.path.exists(r"C:\Users\cc\Desktop\a.txt")) # True
print(os.path.exists(r"C:\Users\cc\Desktop\a")) # True
也就是说,os.path
模块的isfile()
和isdir()
会先通过exists()
判断路径是否存在,如果不存在,会直接返回False
3、实际不存在的路径如何判断文件还是目录
对于实际不存在的路径,我们可以通过检查路径字符串的最后一部分是否包含一个扩展名来猜测它是否是一个文件路径。这种方法并不完全准确,因为有些文件可能没有扩展名,而有些目录的名字可能包含.
暂时这么解决吧,如果有大佬有更好的办法,欢迎交流
import os
# 判断不存在的路径是否是文件
def isfile(path: str):
base = os.path.basename(path)
suffix = os.path.splitext(base)[1]
return True if suffix != '' and '.' in suffix else False
判断结果:
print(isfile("path/a.txt")) # True
print(isfile("path/a")) # False