Modifique los nombres de archivo en las siguientes rutas en lotes.
Directorio de artículos
-
- 1. Lea el nombre del archivo en la ruta especificada
- En segundo lugar, la expresión regular extrae la parte que debe conservarse
- 3. Cambia oficialmente el nombre del archivo
- 4. Código completo
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.
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"