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...")


@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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 @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta!!
ANTRAX