associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

RenameFiles

RenameFile

Este script Python renomeia os arquivos seguindo um padrão e/ou deixa tudo minúsculo e substitui os espaços por underline. No renomeio também pode existir prefixo e/ou sufixo determinado pelo usuário. Ideal para empresas de criação de sites (eu mesmo uso em uma :D) Ele conta com uma interface interativa, ativada através da opção '-i' e outras mais automatizadas... O código está meio grande, mas daqui algum tempo colocarei cada operação em sua devida function :)

Código

   1 import os
   2 import sys
   3 
   4 try:
   5   if sys.argv[1] == '-h':
   6     print "Ajuda do programa:\nSintaxe: rename.py [argumento] [diretorio] [prefixo/sufixo] [sufixo]\n\
   7     \n-h\tMostra essa ajuda\n\
   8     \n-i\tModo Interativo, ideal para a primeira vez de uso\n\
   9     \n-p\tRenomeia automaticamente todos os arquivos do diretorio especificado \n\tusando o prefixo indicado (numericamente sequencial)\n\
  10     \n-s\tRenomeia automaticamente todos os arquivos do diretorio especificado \n\tusando o sufixo indicado (numericamente sequencial)\n\
  11     \n-a\tRenomeia automaticamente todos os arquivos do diretorio especificado \n\tusando prefixo e sufixo indicados (numericamente sequencial)\n\
  12     \n-e\tSubstitui os espacos por underlines e deixa tudo minusculo nos arquivos\n\tdo diretorio especificado"
  13 
  14   elif sys.argv[1] == '-i':
  15     diretorio = raw_input("Digite o diretorio onde serao feita as alteracoes: ")
  16 
  17     while not os.access(diretorio, 1):
  18       print 'O diretorio nao existe! Tente novamente'
  19       diretorio = raw_input("\nDigite o diretorio onde serao feita as alteracoes: ")
  20     else:
  21       os.chdir(diretorio)
  22       
  23       print "Escolha as opcoes abaixo:\n\n\
  24       1. Substituir espacos por underlines e deixar tudo minusculo\n\
  25       2. Renomear arquivos sequencialmente\n\n"
  26       
  27       opcao = raw_input("Qual opcao ira ser, newbaboy ? ")
  28       
  29       if opcao == '1':
  30         print "Os seguintes arquivos serao modificados: \n"
  31         print os.listdir(diretorio)
  32         confirm = raw_input("Deseja prosseguir ? S/N: ")
  33         print os.getcwd()
  34         if confirm == 'S' or 's':
  35           try:
  36             for arquivo in os.listdir(diretorio):
  37               x = arquivo
  38               os.rename(x,x.lower())
  39               for arquivo in os.listdir(diretorio):
  40                 x = arquivo
  41                 s = x.split()
  42                 z = '_'.join(s)
  43                 os.rename(x,z)
  44           except OSError:
  45                 pass
  46           print "Operacao realizada com sucesso! Os arquivos modificados ficaram assim:\n"
  47           print os.listdir(diretorio)
  48               
  49               
  50       elif opcao == '2':
  51         y = 1
  52         prefixo = raw_input("Coloque prefixo, se houver. Enter para prosseguir ")
  53         sufixo = raw_input("Coloque sufixo se houver. Enter para prosseguir ")
  54         for arquivo in os.listdir(diretorio):
  55           x = arquivo
  56           s = x.split('.')
  57           if prefixo and sufixo:
  58             os.rename(x,prefixo+str(y)+sufixo+'.'+s[1])
  59             y = y + 1
  60           elif prefixo:
  61             os.rename(x,prefixo+str(y)+'.'+s[1])
  62             y = y + 1
  63           elif sufixo:
  64             os.rename(x,str(y)+sufixo+'.'+s[1])
  65             y = y + 1
  66           else:
  67             os.rename(x,str(y)+'.'+s[1])
  68             y = y + 1
  69   
  70   elif sys.argv[1] == '-p' and sys.argv[2]:
  71     y = 1
  72     try:
  73       prefixo = sys.argv[3]
  74       diretorio = sys.argv[2]
  75       os.chdir(diretorio)
  76       for arquivo in os.listdir(diretorio):
  77         x = arquivo
  78         s = x.split('.')
  79         os.rename(x,prefixo+str(y)+'.'+s[1])
  80         y = y + 1
  81       print "\nOperacao realizada com sucesso!"
  82     except IndexError:
  83         print "\nPrefixo invalido"
  84   
  85   elif sys.argv[1] == '-s' and sys.argv[2]:
  86     y = 1
  87     try:
  88       sufixo = sys.argv[3]
  89       diretorio = sys.argv[2]
  90       os.chdir(diretorio)
  91       for arquivo in os.listdir(diretorio):
  92         x = arquivo
  93         s = x.split('.')
  94         os.rename(x,str(y)+sufixo+'.'+s[1])
  95         y = y + 1
  96       print "\nOperacao realizada com sucesso!"
  97     except IndexError:
  98         print "\nSufixo invalido"
  99   
 100   elif sys.argv[1] == '-a' and sys.argv[2]:
 101     y = 1
 102     try:
 103       diretorio = sys.argv[2]
 104       prefixo = sys.argv[3]
 105       sufixo = sys.argv[4]
 106       os.chdir(diretorio)
 107       for arquivo in os.listdir(diretorio):
 108         x = arquivo
 109         s = x.split('.')
 110         os.rename(x,prefixo+str(y)+sufixo+'.'+s[1])
 111         y = y + 1
 112       print "\nOperacao realizada com sucesso!"
 113     except IndexError:
 114       print "\nTem certeza que digitou ambos ? (Prefixo e sufixo)"
 115     
 116 except IndexError:
 117   print "\nO argumento -h mostra a ajuda do programa"

Exemplo de uso

Queres mesmo saber ? python rename.py -h :) Quem quiser melhorar algo entrar em contato comigo: exista@gmail.com

Volta para CookBook.


Nicholas Amorim Santos (Marshall)