吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1299|回复: 13
收起左侧

[Python 原创] 百度网盘文件名合法化

[复制链接]
「三千世界」 发表于 2024-7-5 17:20
本帖最后由 「三千世界」 于 2024-7-5 17:24 编辑

百度网盘文件名不能包含字符怎么解决?
可以使用这个脚本,将一些不合法字符去除掉。

1、检查上传的文件中名或文件夹中是否真的含有这些字符\/:*?"<>|,一般不会存在的,因为电脑系统会自动拒绝掉这些字符。2、文件名称以及文件夹名称的开头或结尾是否含有空格,一定要注意文件夹名称前后是不可以用空格的,文件名称可以用但一般尽量不要用,不合常规。3、遇到这个问题,可以尝试更改下文件夹名称和文件名称成普通名称,如果改好后没有问题,那么说明原名称是有问题的。4、直接下载最新的百度网盘,最新版本经测试没有发现这类问题。文件名不能包含/:*?,这些字符是英文状态下的,Windows操作系统不让我们用,我们可以用中文状态下的对应字符即可,注意要设置成全角和中字标点状态下输入字符才可以的。文件名不能包含的字符有:”(双引号)、*(星号)、<(小于)、>(大于)、?(问号)、\(反斜杠)、|(竖线)、/ (正斜杠)、 : (冒号),这些字符操作系统是不让你用在文件名称中的,如果使用就会重命名无效,并且弹出警示框。文件名除了不能用的特殊字符外,还能一些特定的系统保留名称也是不能用的,它们是:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 、 LPT9。


[Python] 纯文本查看 复制代码
import os
import re
from pathlib import Path

# 定义一个函数来清理文件名和目录名

def clean_name(name):
    # 保留中文、英文、数字、点、破折号、下划线
    pattern = re.compile(r'[^\u4e00-\u9fa5a-zA-Z0-9。#《》._-:+()()@]+')
    return pattern.sub('', name)

# 递归遍历目录并清理目录名


def clean_directories(path):
    for root, dirs, files in os.walk(path, topdown=False):
        for dir_name in dirs:
            cleaned_name = clean_name(dir_name)
            try:
                os.rename(os.path.join(root, dir_name),
                          os.path.join(root, cleaned_name))
            except OSError as e:
                print(f"Error renaming directory {dir_name}: {e}")

# 递归遍历目录并清理文件名


def clean_files(path):
    for root, dirs, files in os.walk(path):
        for file_name in files:
            cleaned_name = clean_name(file_name)
            try:
                os.rename(os.path.join(root, file_name),
                          os.path.join(root, cleaned_name))
            except OSError as e:
                print(f"Error renaming file {file_name}: {e}")

# 递归遍历目录并重命名图片文件


def rename_images(path):
    image_extensions = ['.png', '.jpg', '.jpeg',
                        '.gif', '.bmp', '.tiff', '.svg']
    for root, dirs, files in os.walk(path):
        for file_name in files:
            extension = os.path.splitext(file_name)[1].lower()
            if extension in image_extensions:
                dir_name = Path(root).name
                new_file_name = f"{clean_name(dir_name)}_{
                    clean_name(file_name)}"
                try:
                    os.rename(os.path.join(root, file_name),
                              os.path.join(root, new_file_name))
                except OSError as e:
                    print(f"Error renaming image {file_name}: {e}")

# 主函数


def main():
    current_dir = os.getcwd()

    # 第一次遍历:清理目录名
    clean_directories(current_dir)

    # 第二次遍历:清理文件名
    clean_files(current_dir)

    # 第三次遍历:重命名图片文件
    rename_images(current_dir)


if __name__ == "__main__":
    main()

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

gmingx 发表于 2024-7-11 10:21

感谢分享。使用时注意49行,这里单行就好。new_file_name = f”{clean_name(dir_name)}_{clean_name(file_name)}"
fhlfxtd 发表于 2024-9-16 21:19
newGuy 发表于 2024-9-16 16:35
chuhua 发表于 2024-9-16 04:48
要是有exe就更好了,要不然没法用啊
Dmark 发表于 2024-7-29 16:28
liaoticai 发表于 2024-7-19 08:27
百度网盘好,就是不出钱下载太慢

现在不是推出了,用闲置宽带换下载速度,我速度很快
176008 发表于 2024-7-20 13:38
百度网盘好,就是不办会员下载太慢
liaoticai 发表于 2024-7-19 08:27
百度网盘好,就是不出钱下载太慢
yxc8218147 发表于 2024-7-13 00:14
非常感谢,这个问题竟然在这里找到解决方法了,感谢
ffeiko 发表于 2024-7-10 22:50
感谢分享,方便网盘命名
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表