Python判断路径合法性

该代码段定义了一个函数verify_dir_path,用于检查输入的文件夹路径是否合法,包括是否包含非法字符,是否为绝对路径,盘符是否存在。通过正则表达式进行匹配和处理,使用os模块辅助判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断输入的文件夹路径是否合法,是否包含非法字符
def verify_dir_path(path):
    """
    判断输入的文件夹路径是否合法,是否包含非法字符
    @param path: 绝对路径
    @return:
    """
    print(f"判断路径:{path}")
    # 将路径中连续的 \ 和 / 替换为一个 \
    path = re.sub(r'[\\/]+', r'\\', path)
    # 判断是否为盘符根目录
    ret = re.match(r'^[a-zA-Z]:[\\/]*?$', path)
    print(f"1.判断是否为盘符根目录:{path}")
    if ret:
        return True, path
    # 判断是否为绝对路径
    print(f"2.判断是否为绝对路径:{path}")
    if not os.path.isabs(path):
        return False, "路径不是绝对路径"
    # 分离出盘符并判断盘符是否存在
    drive, rest = os.path.splitdrive(path)
    print(f"3.判断盘符是否存在:{path}")
    if not os.path.isdir(drive):
        return False, "盘符不存在"
    # 判断路径是否包含非法字符
    ret = re.findall(r'[:*?"<>|]', rest)
    print(f"4.判断路径是否包含非法字符:{path}")
    if not ret:
        return True, path
    else:
        return False, "路径包含非法字符", ret

测试:

if __name__ == '__main__':
    t_dir = r'e:\\aaa\\\\\\\lll\\lllkk\\//'
    print(verify_dir_path(t_dir))
    t_dir2 = r'e:'
    print(verify_dir_path(t_dir2))
    t_dir3 = r'e:\?:">s\s*'
    print(verify_dir_path(t_dir3))

输出:

"""
判断路径:e:\\aaa\\\\\\\lll\\lllkk\\//
1.判断是否为盘符根目录:e:\aaa\lll\lllkk\
2.判断是否为绝对路径:e:\aaa\lll\lllkk\
3.判断盘符是否存在:e:\aaa\lll\lllkk\
4.判断路径是否包含非法字符:e:\aaa\lll\lllkk\
(True, 'e:\\aaa\\lll\\lllkk\\')
判断路径:e:
1.判断是否为盘符根目录:e:
(True, 'e:')
判断路径:e:\?:">s\s*
1.判断是否为盘符根目录:e:\?:">s\s*
2.判断是否为绝对路径:e:\?:">s\s*
3.判断盘符是否存在:e:\?:">s\s*
4.判断路径是否包含非法字符:e:\?:">s\s*
(False, '路径包含非法字符', ['?', ':', '"', '>', '*'])
"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值