python 移除文件名中不合法的符号(正则表达式实现)

文件名要求

要求1

文件名 不包含 以下任何字符:

“(双引号)、*(星号)、<(小于)、>(大于)、?(问号)、\(反斜杠)、/(正斜杠)、|(竖线)、:(冒号)

要求2

文件名开头或结尾,不要有空格

要求3

文件名最长可以使用255个字符

代码

import re

# 此文件名移动到 legal_filename() 函数下面,会报错 SyntaxError: Non-UTF-8 code starting with '\xe5' in file 
name = r'  哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是:都快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是 快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是快疯了哈*哈"呵>呵呵<呵快|拉倒?减/肥  啦\就是 '

def legal_filename(name):
    '''
    传入文件名,将文件名转换成合法文件名
    1. 将 “(双引号)、*(星号)、<(小于)、>(大于)、?(问号)、\(反斜杠)、/(正斜杠)、|(竖线)、:(冒号) 移除
    2. 如果文件名超过255,就返回前255个字符
    '''
    name_new = name.strip()
    name_new = re.sub('"|\*|<|>|\?|:|/|\||\\\\','',name_new)

    # print("替换不合法符号后,文件名长度:",len(name_new))

    if len(name_new) > 255:
        name_new = name_new[:255]
    return name_new


name_new = legal_filename(name)
print("合法文件名:",name_new)
print("合法文件名长度:",len(name_new))

执行结果:

合法文件名: 哈呵呵呵呵快拉倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉
倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉倒减肥  啦就是都快疯了哈哈呵呵呵呵快拉倒减肥  啦就是 快疯了哈哈呵呵呵呵快拉倒减肥  啦就是快疯了哈哈呵 
呵呵呵快拉倒减肥  啦就是快疯了哈哈呵呵呵呵快拉倒减肥  啦就是快疯了哈哈呵呵呵呵快拉倒减肥  啦就是快疯了哈哈呵呵呵呵快拉倒减肥  啦就是快疯了哈
合法文件名长度: 255

原文出处:/show_1GWTZ3Vqw2C.html