Re: [OT] Ajuda com script
Obrigado pelo script. Ainda não testei - no dia fiz o backup com "cp -Rf" ;)
Assim que testar informo.
Abraços,
Fabio.
> Luiz Guilherme Aldabalde wrote:
> Fabio,
>
> No script anterior tinha um problema de identação. Fiz uma revisão e ficou
> da seguinte forma :
>
> ####
> # Inicio script python
> ###
> # -*- coding: iso-8859-1 -*-
> """
> script.py [1.0 - 20070223] : Copia arquivos de um dir para outro
> Uso :
> script.py [arq_origem] [arq_destino]
> Onde :
> arq_origem : Nome do arquivo com a lista de caminhos completos
> de cada arquivo a ser copiado
> arq_destino : Nome do arquivo com a lista de caminhos completos
> do destino de cada arquivo
>
> Obs :
> Formato esperado para o arq_origem e arq_destino :
> /dir/sub_dir_1/sub_dir_2/.../nome_arq
> Exemplo :
> /home/dd/endo/5_cpre/papilotomia/14.jpg
>
> """
> import os
> import getopt
> import sys
>
>
> def extrai(lista_linha):
> """
> Obtém um dicionário com o caminho dos arquivo.
> """
> dic_path = {}
> for completo in lista_linha:
> nome_file = completo.split("/")[-1].strip()
> lista_nome_path = completo.split("/")[:-1]
> dic_path[nome_file] = lista_nome_path
> #print "dic_path[%s] = %s" % (nome_file, dic_path[nome_file])
> return dic_path
>
> def copia_arq(lista_path, lista_path_dst, arq):
> """
> Copia o arquivo arq de lista_path ( path de origem) para o
> lista_path_dst ( path destino)
> """
> caminho = "/"
> # Testa path e cria o diretório , se necessário
> for i in lista_path_dst:
> caminho = caminho + "/" + i
> if not(os.path.exists (caminho)):
> os.popen("mkdir '%s'" % caminho)
> from_path = "/" + ("/").join(lista_path) + "/" + arq
> to_path = "/" + ("/").join(lista_path_dst) + "/" + arq
>
> os.popen("cp '%s' '%s'" % (from_path, to_path))
> print "arquivo %s copiado" % arq
>
>
> def main():
> """
> Funcao Principal
> """
> try:
> opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
> except getopt.error, msg:
> print msg
> print "Para ajuda use --help ou -h"
> sys.exit(2)
> for o, a in opts:
> if o in ("-h", "--help"):
> print __doc__
> sys.exit(0)
> # Se não receber exatamente 2 argumentos ...
> if len(args) <> 2:
> print __doc__
> sys.exit(0)
>
> arq1 = open(args[0], "r")
> arq2 = open(args[1], "r")
>
> lista_arq1 = arq1.readlines()
> lista_arq2 = arq2.readlines()
>
> arq1.close()
> arq2.close()
>
> dic_path_from = {}
> dic_path_to = {}
>
> dic_path_from = extrai(lista_arq1).copy()
> dic_path_to = extrai(lista_arq2).copy()
>
> for arquivo in dic_path_from.keys():
> copia_arq(dic_path_from[arquivo],dic_path_to[arquivo], arquivo)
>
>
> if __name__ == "__main__":
> main()
>
>
>
> ####
> # Fim Script python
> ####
>
Reply to: