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

Diferenças para "RenameFiles"

Diferenças entre as versões de 5 e 6
Revisão 5e 2005-12-11 03:22:15
Tamanho: 2103
Editor: Nicholas
Comentário:
Revisão 6e 2005-12-11 06:37:00
Tamanho: 5216
Editor: Nicholas
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 5: Linha 5:
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 :)
Linha 12: Linha 13:
import sys
Linha 13: Linha 15:
diretorio = raw_input("Digite o diretorio onde serao feita as alteracoes: ") try:
  while not os.access(sys.argv[2],1):
      print "\nO diretorio especificado nao existe, tente novamente"
      break
  if sys.argv[1] == '-h':
    print "Ajuda do programa:\nSintaxe: rename.py [argumento] [diretorio] [prefixo/sufixo] [sufixo]\n\
    \n-h\tMostra essa ajuda\n\
    \n-i\tModo Interativo, ideal para a primeira vez de uso\n\
    \n-p\tRenomeia automaticamente todos os arquivos do diretorio especificado \n\tusando o prefixo indicado (numericamente sequencial)\n\
    \n-s\tRenomeia automaticamente todos os arquivos do diretorio especificado \n\tusando o sufixo indicado (numericamente sequencial)\n\
    \n-a\tRenomeia automaticamente todos os arquivos do diretorio especificado \n\tusando prefixo e sufixo indicados (numericamente sequencial)\n\
    \n-e\tSubstitui os espacos por underlines e deixa tudo minusculo nos arquivos\n\tdo diretorio especificado"
Linha 15: Linha 28:
while not os.access(diretorio, 1):
  print 'O diretorio nao existe! Tente novamente'
diretorio = raw_input("\nDigite o diretorio onde serao feita as alteracoes: ")
else:
  os.chdir(diretorio)
  elif sys.argv[1] == '-i':
    diretorio = raw_input("Digite o diretorio onde serao feita as alteracoes: ")
Linha 21: Linha 31:
print "Escolha as opcoes abaixo:\n\n\
1. Substituir espacos por underlines e deixar tudo minusculo\n\
2. Renomear arquivos sequencialmente\n\n"

opcao = raw_input("Qual opcao ira ser, newbaboy ? ")

if opcao == '1':
  print "Os seguintes arquivos serao modificados: \n"
  print os.listdir(diretorio)
  confirm = raw_input("Deseja prosseguir ? S/N: ")
    while not os.access(diretorio, 1):
      print 'O diretorio nao existe! Tente novamente'
      diretorio = raw_input("\nDigite o diretorio onde serao feita as alteracoes: ")
    else:
      os.chdir(diretorio)
      
      print "Escolha as opcoes abaixo:\n\n\
      1. Substituir espacos por underlines e deixar tudo minusculo\n\
      2. Renomear arquivos sequencialmente\n\n"
      
      opcao = raw_input("Qual opcao ira ser, newbaboy ? ")
      
      if opcao == '1':
        print "Os seguintes arquivos serao modificados: \n"
        print os.listdir(diretorio)
        confirm = raw_input("Deseja prosseguir ? S/N: ")
        print os.getcwd()
        if confirm == 'S' or 's':
          try:
            for arquivo in os.listdir(diretorio):
              x = arquivo
              os.rename(x,string.lower(x))
              for arquivo in os.listdir(diretorio):
                x = arquivo
                s = string.split(x)
                z = string.join(s,'_')
                os.rename(x,z)
          except OSError:
                pass
          print "Operacao realizada com sucesso! Os arquivos modificados ficaram assim:\n"
          print os.listdir(diretorio)
              
              
      elif opcao == '2':
        y = 1
        prefixo = raw_input("Coloque prefixo, se houver. Enter para prosseguir ")
        sufixo = raw_input("Coloque sufixo se houver. Enter para prosseguir ")
        for arquivo in os.listdir(diretorio):
          x = arquivo
          s = string.split(x,'.')
          if prefixo and sufixo:
            os.rename(x,prefixo+str(y)+sufixo+'.'+s[1])
            y = y + 1
          elif prefixo:
            os.rename(x,prefixo+str(y)+'.'+s[1])
            y = y + 1
          elif sufixo:
            os.rename(x,str(y)+sufixo+'.'+s[1])
            y = y + 1
          else:
            os.rename(x,str(y)+'.'+s[1])
            y = y + 1
Linha 32: Linha 84:
  if confirm == 'S' or 's':
    for arquivo in os.listdir(diretorio):
      x = arquivo
      os.rename(x,string.lower(x))
      s = string.split(x)
      z = string.join(s,'_')
      os.rename(x,z)
  print "Operacao realizada com sucesso! Os arquivos modificados ficaram assim:\n"
  print os.listdir(diretorio)

elif opcao == '2':
  y = 1
  prefixo = raw_input("Coloque prefixo, se houver. Enter para prosseguir ")
  sufixo = raw_input("Coloque sufixo se houver. Enter para prosseguir ")
  for arquivo in os.listdir(diretorio):
    x = arquivo
    s = string.split(x,'.')
    if prefixo and sufixo:
      os.rename(x,prefixo+str(y)+sufixo+'.'+s[1])
      y = y + 1
    elif prefixo:
      os.rename(x,prefixo+str(y)+'.'+s[1])
      y = y + 1
    elif sufixo:
      os.rename(x,str(y)+sufixo+'.'+s[1])
      y = y + 1
    else:
      os.rename(x,str(y)+'.'+s[1])
      y = y + 1
  elif sys.argv[1] == '-p' and sys.argv[2]:
    y = 1
    try:
      prefixo = sys.argv[3]
      diretorio = sys.argv[2]
      os.chdir(diretorio)
      for arquivo in os.listdir(diretorio):
        x = arquivo
        s = string.split(x,'.')
        os.rename(x,prefixo+str(y)+'.'+s[1])
        y = y + 1
      print "\nOperacao realizada com sucesso!"
    except IndexError:
        print "\nPrefixo invalido"
  
  elif sys.argv[1] == '-s' and sys.argv[2]:
    y = 1
    try:
      sufixo = sys.argv[3]
      diretorio = sys.argv[2]
      os.chdir(diretorio)
      for arquivo in os.listdir(diretorio):
        x = arquivo
        s = string.split(x,'.')
        os.rename(x,str(y)+sufixo+'.'+s[1])
        y = y + 1
      print "\nOperacao realizada com sucesso!"
    except IndexError:
        print "\nSufixo invalido"
  
  elif sys.argv[1] == '-a' and sys.argv[2]:
    y = 1
    try:
      diretorio = sys.argv[2]
      prefixo = sys.argv[3]
      sufixo = sys.argv[4]
      os.chdir(diretorio)
      for arquivo in os.listdir(diretorio):
        x = arquivo
        s = string.split(x,'.')
        os.rename(x,prefixo+str(y)+sufixo+'.'+s[1])
        y = y + 1
      print "\nOperacao realizada com sucesso!"
    except IndexError:
      print "\nTem certeza que digitou ambos ? (Prefixo e sufixo)"
    
except IndexError:
  print "\nO argumento -h mostra a ajuda do programa"
Linha 66: Linha 136:
Não tem mistério... é só usar, ele é auto-explicativo. :) Queres mesmo saber ? python rename.py -h
:)
Quem quiser melhorar algo entrar em contato comigo: exista@gmail.com

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