Este cambio de nombre es bastante fácil, por ejemplo, con los módulos os y glob :
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
Luego puede usarlo en su ejemplo de esta manera:
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
El ejemplo anterior convertirá todos los *.doc
archivos en c:\temp\xx
dir a new(%s).doc
, donde %s
es el nombre base anterior del archivo (sin extensión).
%
usa el símbolo en el comandoos.path.join(dir, titlePattern % title + ext)
? Sé que%
es para operación de módulo y también se usa como operador de formato. Pero generalmente va seguido des
of
para especificar el formato. ¿Por qué no hay nada (espacio) inmediatamente después%
en dicho comando?Prefiero escribir pequeñas líneas para cada reemplazo que tengo que hacer en lugar de hacer un código más genérico y complejo. P.ej:
Esto reemplaza todos los guiones bajos con guiones en cualquier archivo no oculto en el directorio actual
fuente
rename
:(no such file error
recuerde queos.rename
necesita la ruta completaSi no le importa usar expresiones regulares, entonces esta función le dará mucho poder para cambiar el nombre de los archivos:
Entonces, en su ejemplo, podría hacer (asumiendo que es el directorio actual donde están los archivos):
pero también puede volver a los nombres de archivo iniciales:
y más.
fuente
Tengo esto para simplemente cambiar el nombre de todos los archivos en las subcarpetas de la carpeta
Estoy reemplazando todas las apariciones de old_str con cualquier caso por new_str.
fuente
Prueba: http://www.mattweber.org/2007/03/04/python-script-renamepy/
El código fuente del programa también está disponible.
fuente
He escrito un script de Python por mi cuenta. Toma como argumentos la ruta del directorio en el que están presentes los archivos y el patrón de nomenclatura que desea utilizar. Sin embargo, cambia el nombre adjuntando un número incremental (1, 2, 3, etc.) al patrón de nomenclatura que le da.
Espero que esto funcione para usted.
fuente
fuente
os.chdir(path_of_directory)
fuente
Tuve un problema similar, pero quería agregar texto al principio del nombre de archivo de todos los archivos en un directorio y usé un método similar. Vea el ejemplo a continuación:
fuente
En cuanto a mí, en mi directorio tengo varios subdirectorios, cada subdirectorio tiene muchas imágenes.Quiero cambiar todas las imágenes de subdirectorios a 1.jpg ~ n.jpg
(mi propia respuesta) https://stackoverflow.com/a/45734381/6329006
fuente
fuente
Si desea modificar los nombres de los archivos en un editor (como vim), la biblioteca de clics viene con el comando
click.edit()
, que se puede usar para recibir información del usuario de un editor. A continuación, se muestra un ejemplo de cómo se puede utilizar para refactorizar archivos en un directorio.Escribí una aplicación de línea de comandos que usa la misma técnica, pero que reduce la volatilidad de este script y viene con más opciones, como la refactorización recursiva. Aquí está el enlace a la página de github . Esto es útil si le gustan las aplicaciones de línea de comandos y está interesado en realizar algunas ediciones rápidas en los nombres de los archivos. (Mi aplicación es similar al comando "bulkrename" que se encuentra en Ranger ).
fuente
Este código funcionará
La función toma exactamente dos argumentos f_patth como su ruta para cambiar el nombre del archivo y new_name como su nuevo nombre para el archivo.
fuente