Una función para copiar archivo o directorio

Iniciado por darkucla, Enero 09, 2020, 11:41:45 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 09, 2020, 11:41:45 PM Ultima modificación: Enero 10, 2020, 12:00:48 PM por darkucla
Desde antes les digo que no sé como publicar u.u
Soy principiante en underc0de y en python... les comparto una función que he hecho para copiar un archivo o un directorio la cual uso para respaldar archivos en windows

Faltará el return 0 o -1 en caso de error.. yo que sé?!

Hasta ahora funcionó:
copia("archivo.txt", "archivo2.txt)
copia("archivo.txt", "directorio")
copia("archivo.txt", "directorio\archivo3.txt")
copia("archivo.txt") # crea un "archivo_copia.txt"
copia("directorio", "directorio2")
copia("directorio") # crea un "directorio_copia"
copia() # hace una copia del directorio actual_copia

Espero les sea de utilidad o si se puede mejorar me lo hagan saber.. gracias

Código: python

import os  # clsFTP, copia(), clsUAC
# import sys  # clsUAC
# import ctypes   # clsUAC

import shutil      # copia()
from distutils.dir_util import copy_tree   # copia()

def copia(strOrigen="", strDestino=""):
    if strOrigen == "":           # Si no se pasa origen
        strOrigen = os.getcwd()   # se toma el directorio actual
    if os.path.exists(strOrigen):  # Si existe el origen let's play...
        if strDestino == "":   # si no se pasa el destino entonces será origen_copia
            strDestino = os.path.splitext(strOrigen)[0] + "_Copia" + os.path.splitext(strOrigen)[1]
       
        if os.path.splitext(strDestino)[1] == "":  #  posible directorio
            os.makedirs(strDestino, exist_ok=True) # Crea los directorios

        if os.path.isfile(strOrigen):  # si queremos copiar un solo archivo
            os.makedirs(os.path.dirname(os.path.abspath(strDestino)), exist_ok=True)
            shutil.copy(strOrigen, strDestino)
           
        if os.path.isdir(strOrigen):  # si lo que queremos copiar es un directorio
            copy_tree(strOrigen, strDestino)


Si todo va bien, luego les comparto la clase clsFTP y la clsUAC


Ejemplo:
Código: python


lstARespaldar = [r"C:\dir1\dir2", r"C:\dir3\dir4\archivo.txt"]
strRutaRespaldo = r"C:\dirRespaldo"

for strOrigen in lstARespaldar:
    print("Copiando",  strOrigen, " a ", strRutaRespaldo)
    copia(strOrigen, strRutaRespaldo)
               
print("Respaldo Finalizado...")


@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login justamente lo que me preguntabas ayer. Acá esta hecho en python, le modificas un par de lineas y te queda lo que vos querías.

Saludos y muy buen aporte @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login!!
ANTRAX