Python por lotes cambia el nombre de los archivos

Modifique los nombres de archivo en las siguientes rutas en lotes.

1. Lea el nombre del archivo en la ruta especificada

#导入标准库
import os

#读取文件名
filesDir = "路径……"
fileNameList = os.listdir(filesDir)

#输出路径中的所有文件
for filename in fileNameList:
    print(filename)

En segundo lugar, la expresión regular extrae la parte que debe conservarse

1. Introduce la biblioteca re

Aquí debe importar la biblioteca re, que es principalmente la biblioteca estándar de Python y se usa principalmente para la coincidencia de cadenas.

Re función principal de la biblioteca

nombre de la función

efecto

tipo de retorno

re.findall()

Buscar y devolver todas las subcadenas coincidentes

tipo de lista

revancha()

coincidencia desde el principio de la cadena

objeto de coincidencia

investigación()

La primera posición que coincide con la búsqueda

objeto de coincidencia

re.dividir()

Divida la cadena de acuerdo con el resultado coincidente

tipo de lista

re.finditer()

El tipo de iteración donde la búsqueda devuelve resultados coincidentes.

objeto de coincidencia

re.sub()

Reemplace todas las subcadenas que coincidan con la expresión regular en una cadena y devuelva la cadena reemplazada

cadena

2. Uso de funciones en la biblioteca re

(1) re.findall() #más comúnmente utilizado

El primer parámetro es la expresión regular a buscar y el segundo parámetro es la cadena a buscar.

import re

#搜索所有的五位数字
ls = re.findall(r'[1-9]\d{5}','BIT100081  TUS444567')
print(ls)


['100081', '444567']
(2) re.sub (patrón, repetición, cadena, conteo)

parámetro

efecto

patrón

expresión regular

reemplazar

Reemplazar cadena con cadena coincidente

cadena

cadena de coincidencia

contar

Número máximo de reemplazos

El uso específico de la biblioteca re es para que los lectores exploren por sí mismos. Debido a la complejidad de las cadenas, el uso de expresiones regulares es diferente. Para más detalles, puede estudiar detenidamente el sitio web oficial o el tutorial para principiantes: Expresiones regulares de Python3 .

3. Ejemplos

  • Tome este ejemplo para ilustrar que la misma parte de estos nombres de archivo tiene corchetes, así que primero escriba la expresión regular para que coincida con los corchetes.

  • El método de compilación en la biblioteca re puede devolver una regla de interceptación de expresión regular. Donde (.*?) significa que cualquier carácter aparece cualquier número de veces.

# 正则表达式提取需要保留的部分,,,,主要匹配删除括号的内容
rules = re.compile(r'[(](.*?)[)]', re.S)
  • Esto elimina los paréntesis y el contenido de los paréntesis.
  • Recuerde que lo que se pasa en la compilación debe ser una cadena, y la r anterior es para evitar caracteres de escape. Pruebe una coincidencia para evitar errores.
# 正则表达式提取需要保留的部分,,,,主要匹配删除括号的内容
rules = re.compile(r'[(](.*?)[)]', re.S)

#开始数组循环更改文件名
for filename in fileNameList:
    print("旧的名字是:\t"+filename)
    print("开始截取!")
    newFilename = re.sub(rules,'',str(filename))
#输出保留的内容
    print("新名字是:\t"+newFilename)
    print("\n\n")

3. Cambia oficialmente el nombre del archivo

1. Use el método de cambio de nombre en la biblioteca os

os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))

2. ¿Es correcta la prueba?

Nota: Los diferentes nombres de archivo tienen diferentes formas de usar expresiones regulares, y los problemas específicos deben analizarse en detalle.

#开始数组循环更改文件名
for filename in fileNameList:
    print("旧的名字是:\t"+filename)
    print("开始截取!")
    newFilename = re.sub(rules,'',str(filename))
#输出保留的内容
    print("新名字是:\t"+newFilename)
    print("开始改名。。。")
    os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))
    print("改名完毕!")
    print("======================================================================================")

3. Otras situaciones de emparejamiento

(1) Coincide con el número de serie del nombre del archivo
#删除重复的文件名序号
rules = re.compile(r'^\d', re.S)
  • Si el nombre del archivo tiene dos números de serie y se repiten, se puede utilizar esta función, en este caso no se puede utilizar porque los dos números de serie no son iguales.

  • Si el archivo no excede 0-9, puede ejecutarlo una vez; pero si excede 10-99, puede ejecutarlo nuevamente; si el número de serie es de tres dígitos, puede ejecutarlo una tercera vez.

  • \d es equivalente a [0-9] .

(2) Coincidencia de caracteres especiales
#删除文件名前的特殊字符,如果是"."删除".",如果是"#"删除"#"
rules = re.compile(r'^\.', re.S)
  • Nota: Al emparejar, preste atención a la posición de este símbolo especial; si está al principio, presione para agregar el símbolo ^ ; si está en otras posiciones, preste atención, si se elimina el punto , preste atención al punto en el sufijo del nombre. En este momento, es necesario eliminar el sufijo al principio y luego agregar el sufijo especificado cuando se complete el cambio.
(3) Eliminar la parte especificada de la cadena
# 正则表达式删除指定的的部分
rules = re.compile(r'Swagger-[0-9][0-9]:', re.S)
  • Nota: Para la parte especificada en la expresión regular, se recomienda copiar y pegar para evitar espacios en el medio.
(4) Agregue el nombre del sufijo en el último paso
# 可以为文件名添加后缀,,,本质为在最后匹配的字符串最后增加一个部分,可以为数字,也可以为文件后缀
newFilename = newFilename + ".mp4"

4. Código completo

Haga clic para descargar el código completo .

Supongo que te gusta

Origin blog.csdn.net/weixin_44778232/article/details/128783157
Recomendado
Clasificación