Jump to content

Loop no Python


Recommended Posts

Alguém consegue me ajudar a colocar um loop nesse código?

Ponto relevante: Preciso que isso rode apenas 30 vezes.

 

mover_arquivo = ('C:\LerPDF\Mover_Arquivos\Macro_Mover_Arquivos.xlsm')
df_mover_arquivo = pd.read_excel(mover_arquivo,sheet_name='Nomes')
#print(df_mover_arquivo) #['Lista']
Lista = df_mover_arquivo.loc[0,'Lista']
#print(Lista)
 
wb = xw.Book('C:\LerPDF\Mover_Arquivos\Macro_Mover_Arquivos.xlsm')
 
CopiarLinha = wb.macro('Módulo2.CopiarLinha')
 
CopiarLinha()
 
MoverArquivo = wb.macro('Módulo1.MoverArquivos')
 
MoverArquivo()
 
wb.save()
 
time.sleep(5)
 
merger = PdfFileMerger()
 
path_to_files = r'C:\\LerPDF\\Mover_Arquivos\\Destino\\temp\\'
for root, dirs, file_names in os.walk(path_to_files😞
    for file_name in file_names:
        merger.append(path_to_files + file_name)
 
merger.write('Teste.pdf')
merger.close()
 
dir = 'C:\LerPDF'
 
arquivo_antigo = os.path.join(dir, 'Teste.pdf')
#arquivo_novo = os.path.join(dir, 'Teste2.pdf')
arquivo_novo = str(Lista)
os.rename(arquivo_antigo, arquivo_novo)
 
DeletaLinhaNome = wb.macro('Módulo6.DeletaLinhaNome')
 
DeletaLinhaNome()
 
DeletarPasta = wb.macro('Módulo3.btn_excluir_Click')
 
DeletarPasta()
 
wb.save()
Link to comment
Share on other sites

  • Pessoal da TecnoSpeed

Olá @vgcordeiro tudo bem ?

Basta adicionar um FOR desta forma.

for i in range(1,30):
  # adicionar seu codigo aqui.

A grosso modo é isso, porém é bom se atentar se precisará que os valores alterem a cada iteração e tals.

Link to comment
Share on other sites

Thanael deu certo! Muiiiito obrigado.

Sem querer abusar, mas nem sempre ele vai rodar 30 arquivos. Pode ser que rode menos como foi no caso do meu teste ai ele acaba dando um erro no final depois de rodar, por exemplo, 28.

seria possível fazer alguma if no fim pra se der esse erro, ou mesmo quando rodar os 30 arquivos colocar uma Mensagem tipo concluído?

 

Link to comment
Share on other sites

  • Pessoal da TecnoSpeed

Olá @vgcordeiro vou lhe explicar uma forma que lhe sirva totalmente.

Vou lhe explicar a teoria primeiro e um exemplo de código na prática. 

Pensamos da seguinte forma, você necessita realizar esse processo N vezes ou seja para quantos arquivos você ter correto ? Portanto basta ao invés de fazermos um número fixo de LOOPs, obtermos a quantidade de arquivos e realizar a quantidade de Iterações referentes a quantidade de arquivos, vou lhe mostrar um exemplo.

import os 

path = 'C:\\Users\\thanael.butewicz\\Documents\\bokeh'

for file in os.listdir(path):  
    print(file)

Desta forma ele vai obter uma lista contendo o nome dos arquivos presente na pasta definido nessa variável criada.

 image.png
 

Acredito que assim seu código irá funcionar independente do número de arquivos que existir na pasta 👍

OBS: Lembre-se que no caminho é necessario passar o caminho todo, e usar \\ ao invés de \ caso contrario irá gerar um erro pois o \ é um caractere usado para formatar strings também.

Enfim, testa ai e depois me diz se deu certo 😄

Link to comment
Share on other sites

  • Pessoal da TecnoSpeed

Você também pode adicionar print( ) ao final de cada iteração para sinalizar a conclusão de cada iteração.

print(f"O arquivo {file} foi concluido")
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Who's Online   0 Members, 0 Anonymous, 8 Guests (See full list)

    • There are no registered users currently online


×
×
  • Create New...