os.path模块路径判断isfile()和isdir()中的坑

os.path模块文件目录判断

    • 1、背景描述
    • 2、os.path模块isfile()和isdir()的正确用法
    • 3、实际不存在的路径如何判断文件还是目录


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

你可能感兴趣的:(#,Python,python)