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

Revisão 7e 2005-12-12 17:39:27

Excluir mensagem

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