Python: mueve y sobrescribe archivos y carpetas

En este artículo, aprenderemos a mover una colección de archivos y carpetas donde puede haber archivos/carpetas con el mismo nombre que en el nombre de origen en el destino. Por lo que es posible que tengamos que sobrescribir el archivo de destino existente con el archivo de origen.

El método shutil.move() se usa para mover un archivo o directorio de un lugar a otro. Si hay un directorio o archivo existente en el destino que se verificará con el método os.path.isfile() y os.path.isdir() , se eliminará con el método os.remove() , y si es un directorio, luego se eliminará usando el método shutil.rmtree() y luego se moverá el archivo.

Sintaxis:

shutil.move(origen, destino, copy_function = copy2)

Parámetros:

  • fuente: una string que representa la ruta del archivo fuente.
  • destino: una string que representa la ruta del directorio de destino.
  • copy_function (opcional): el valor predeterminado de este parámetro es copy2. Podemos usar otra función de copia como copiar, árbol de copias, etc. para este parámetro.

Valor devuelto: este método devuelve una string que representa la ruta del archivo recién creado.

Llame al método shutil.move(origen, destino) reemplazando el origen y el destino por la ruta completa en formato de string. Con el método anterior, los archivos con el mismo nombre se sobrescribirán con el contenido del archivo del archivo de origen.

Ejemplo 1: Programa para mover una carpeta que contiene un archivo usando python.

Jerarquía de carpetas:

Desktop
     |_folder_
              |_Geeks folder
              |_test folder_gfg.txt

Python3

# importing os module
import os
 
# importing shutil module
import shutil
 
# path
path = 'C:/Users/KIIT/Desktop/folder'
 
# List files and directories
print("Before moving file:")
print(os.listdir(path))
 
 
# Assign source and destination
source = 'test folder'
destination = 'Geeks folder'
 
sourcePath = path+'/'+source
destinationPath = path+'/'+destination
 
# Check if file already exists
if os.path.isdir(destinationPath+'/'+source):
    print(source, 'exists in the destination path!')
    shutil.rmtree(destinationPath+'/'+source)
     
elif os.path.isfile(destinationPath+'/'+source):
    os.remove(destinationPath+'/'+source)
    print(source, 'deleted in', destination)
 
# Move the content
# source to destination
dest = shutil.move(sourcePath, destinationPath)
 
# List files and directories
print("After moving file:")
print(os.listdir(path))
 
print(source, 'has been moved!')
 
# Print new path of file
print("Destination path:", dest)

Producción:

Ejemplo 2: Programa para sobrescribir una carpeta que contiene un archivo usando python.

Jerarquía de carpetas:

Desktop
     |_folder_
              |_Geeks folder_test folder_gfg.txt
              |_test folder_gfg.txt

Python3

# importing os module
import os
 
# importing shutil module
import shutil
 
# path
path = 'C:/Users/KIIT/Desktop/folder'
 
# List files and directories
print("Before moving file:")
print(os.listdir(path))
 
 
# Assign source and destination
source = 'test folder'
destination = 'Geeks folder'
 
sourcePath=path+'/'+source
destinationPath=path+'/'+destination
 
# Check if file already exists
if os.path.isdir(destinationPath+'/'+source):
        print(source,'exists in the destination path!')
        shutil.rmtree(destinationPath+'/'+source)
       
elif os.path.isfile(destinationPath+'/'+source):  
        os.remove(destinationPath+'/'+source)
        print(source,'deleted in',destination)
 
# Move the content
# source to destination
dest = shutil.move(sourcePath, destinationPath)
 
# List files and directories
print("After moving file:")
print(os.listdir(path))
 
print(source,'has been moved!')
 
# Print new path of file
print("Destination path:", dest)

Producción:

Publicación traducida automáticamente

Artículo escrito por diwaanchandarig19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *