Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sxslex/58697803195f374bbaa73901e167197b to your computer and use it in GitHub Desktop.
Save sxslex/58697803195f374bbaa73901e167197b to your computer and use it in GitHub Desktop.
renomeia_pastas.py
# -*- coding: utf-8 -*-
"""Renomeia pastas de acordo com uma tag de um arquivo dentro da pasta."""
# renomeia_pastas.py
import unicodedata
import glob
import os
def remove_accents(s):
"""Remove acentos de uma string."""
encoding = None
# compatibilidade com python 2
if (
sys.version_info.major < 3 and hasattr(s, 'decode') and
isinstance(s, str)
):
for encoding in ['utf-8', 'iso-8859-1']:
try:
s = s.decode(encoding)
break
except:
pass
s = unicodedata.normalize('NFKD', s).encode('ASCII', 'ignore')
if not encoding:
if hasattr(s, 'decode'):
s = s.decode('ASCII')
return s
def renomeia(pastaraiz, arquivo, tag):
"""Renomeia pastas de acordo com o local do nome."""
# lista os arquivos dos diretorio
for p in glob.glob(pastaraiz + '/*'):
# monta o nome da pasta
pasta = os.path.join(pastaraiz, p)
# se nao nao for uma pasta continua
if not os.path.isdir(pasta):
continue
# mosnta o caminho do arquivo
arq = os.path.join(pasta, arquivo)
# se nao exisitr o arquivo continua
if not os.path.isfile(arq):
continue
# tenta achar o titulo do para o nome do novo diretorio
try:
with open(arq, 'r') as f:
html = f.read()
html = remove_accents(html)
title = '-'.join(
(
html.split('<%s>' % tag)[1].split('</')[0]
).replace('-', '').split()
)
except:
# se nao conseguir continua
continue
# monta a nova pasta
nova_pasta = os.path.join(pastaraiz, title)
for i in range(2, 10000):
# se ja esta com o nome certo, aborta
if pasta == nova_pasta:
break
# se a pasta ja existir monta um novo nome, e continua
if os.path.exists(nova_pasta):
nova_pasta = os.path.join(pastaraiz, title + '-' + str(i))
continue
# renomeia a pasta
os.rename(pasta, nova_pasta)
print(
'Renomeado de "%s" para "%s"' % (pasta, nova_pasta)
)
break
if __name__ == '__main__':
renomeia(
pastaraiz=os.sys.argv[1],
arquivo=os.sys.argv[2], # 'simulacao/html/index.htm'
tag=os.sys.argv[3] # 'title'
)
# python "/tmp/docs" "simulacao/html/index.htm" "title"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment