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 #### Abraços, Luiz Guilherme On 2/22/07, Fabio Guerrazzi <[EMAIL PROTECTED]> wrote:
> Luiz Guilherme Aldabalde wrote: > Fabio, > > Eui gosto muito do Python, e fiz o seguinte script para a sua situação: > #### > # Inicio script python > ### > import os > > 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 > > > arq1 = open("arq1.txt", "r") > arq2 = open("arq2.txt", "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) > > #### > # Fim Script python > #### > > Observe que eu nâo coloquei nenhum tratamento de erro, por isso os > arquivos > de origem devem existir e você deverá rodar estre script como usuário que > tenha pemrissão de escrita no path de destino. > > Espero ter lhe ajudado. > > Abraços, > Luiz Guilherme > > On 2/22/07, Fabio Guerrazzi <[EMAIL PROTECTED]> wrote: >> >> Pessoal, >> >> Tenho dois arquivos com a seguinte estrutura: >> >> Arquivo 1: >> /home/dd/endo/1_esofago/Barrett/Barrett longo-861890-0_04.bmp >> /home/dd/endo/5_cpre/papilotomia/14.jpg >> /home/dd/endo/2_estomago/variz gastrica sgto em jato/43.JPG >> etc... >> >> Arquivo 2: >> /home/dd/admin/imagens/1_esofago/Barrett/Barrett longo-861890-0_04.bmp >> /home/dd/admin/imagens/5_cpre/papilotomia/14.jpg >> /home/dd/admin/imagens/2_estomago/variz gastrica sgto em jato/43.JPG >> etc... >> >> Eu preciso mover todos os arquivos listados em 1 para o endereço >> especificado em 2. >> Nem todos os diretórios destino existem, e como se pode ver, alguns >> nomes >> contém espaços ou maiúsculas. >> >> Eu consegui gerar os arquivos, porém não tenho idéia de como contruir o >> script. Ajudou sim. Entretanto ou eu não estou sabendo usar, ou há algum erro no script. Veja: $ python script.py arquivo_origem.txt arquivo-destino.txt sys:1: DeprecationWarning: Non-ASCII character '\xc3' in file script.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details File "script.py", line 10 dic_path = {} ^ SyntaxError: invalid syntax -- Fabio. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]