Tengo una secuencia de comandos de Python que compara los nombres de archivo existentes en una carpeta con una tabla de referencia y luego determina si es necesario cambiar el nombre o no.
A medida que recorre cada nombre de archivo:
'oldname' = the current file name 'newname' = what it needs to be renamed toQuiero cambiar el nombre del archivo y moverlo a una nueva carpeta "..\renamedfiles"
¿Puedo cambiar el nombre y mover al mismo tiempo que itera a través del bucle?
Sí, usted puede hacer esto. En Python, puede usar la función de move en la biblioteca shutil para lograr esto.
Digamos que en Linux, tiene un archivo en la carpeta /home/user/Downloads llamado "test.txt" y desea moverlo a /home/user/Documents y también cambiar el nombre a "useful_name.txt". Puedes hacer ambas cosas en la misma línea de código:
import shutil shutil.move('/home/user/Downloads/test.txt', '/home/user/Documents/useful_name.txt')En tu caso puedes hacer esto:
import shutil shutil.move('oldname', 'renamedfiles/newname')os.rename (y os.replace ) no funcionarán si las ubicaciones de origen y destino están en diferentes particiones/unidades/dispositivos. Si ese es el caso, debe usar shutil.move , que usará el cambio de nombre atómico si es posible, y retrocederá para copiar y luego eliminar si el destino no está en el mismo sistema de archivos. Es perfectamente feliz mover y renombrar en la misma operación; la operación es la misma independientemente.
Para realizar ambas operaciones, puede usar la os.rename(src, dest) .
Debe tener el directorio deseado para guardar el archivo y el nuevo nombre de archivo. Puede hacer esto para cada archivo que encuentre en su ciclo.
Por ejemplo:
# In Windows dest_dir = "tmp\\2" new_name = "bar.txt" current_file_name = "tmp\\1\\foo.txt" os.rename(current_file_name, os.path.join(dest_dir, new_name)) La función de cambio de rename le permite cambiar el nombre del archivo y su carpeta al mismo tiempo.
Para evitar errores al cambiar el nombre y mover el archivo, use shutil.move .