Jump to content

Ler arquivos em um diretório


sirsmart
Ir para a Solução Solucionado por Thanael,

Postagens Recomendadas

Galera tenho que ler 10 arquivos em uma diretório e concatena los em uma sequencia de criação, exemplo

arquivo1.txt

arquivo2.txt

arquivo3.txt

Preciso ler esses arquivos na sequencia correta que foram criados e concatena los na mesma sequencia.

Como posso fazer isso ?

Obrigado

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá @sirsmart tudo bem ? 

Existe uma maneira simples de realizar isso dependendo do conteúdo dos arquivos. Mas basicamente você precisará realizar duas etapas

  • Navegar pelos Arquivos
  • Armazenar os dados dos arquivos

Segue abaixo um exemplo de código

import os

# Pasta dos arquivos 
caminho = '/home/ec2-user/etls/Testes_Wiki/'

# Obter todos os arquivos da pasta
files = os.listdir(caminho)
files.sort()

# Teremos uma lista com todos os arquivos .txt
arquivos_txt = [file for file in files if '.txt' in file]

# Uma string para armazenar todos os outros arquivos
all_data = ''

for txt in arquivos_txt:
  	# Ler o arquivo
    data = open(caminho + txt, "r")
    
    # Armazenar os dados
    all_data += f"Arquivo: {txt} \nDados: {data.read()}.  \n\n"

print(all_data)
  

image.png

Espero que seja isso que precise, caso contrario estou a disposição para ajudar.

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Quando é obtido todos os arquivos da pasta. Usamos o sort( ) para ordenar os arquivos se não me engano por ordem alfabética (A até Z, a até z) algo assim.

Ai ao usar o FOR ele irá percorrer por cada registro na ordem dos índices do FOR ou seja na ordem que o SORT retornou (Alfabética)

Essa parte aqui do código

import os

# Pasta dos arquivos 
caminho = '/home/ec2-user/etls/Testes_Wiki/'

# Obter todos os arquivos da pasta
files = os.listdir(caminho)
files.sort()

# Teremos uma lista com todos os arquivos .txt
arquivos_txt = [file for file in files if '.txt' in file]

print(arquivos_txt)

Se você olhar o print dessa lista (arquivos_txt) é nesta ordem que iremos ler os arquivos.

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed
  • Solução

@sirsmart é possivel sim segue abaixo o código.

import os
import datetime
import pandas as pd

# Pasta dos arquivos 
caminho = '/home/ec2-user/etls/'

# Obter todos os arquivos da pasta
files = os.listdir(caminho)
files.sort()

# Teremos uma lista com todos os arquivos .txt
dict_arquivos = {
    'file': [],
    'created_at': []
}

for file in files:
    #Verificar se é TXT
    if '.txt' in file: 
        # Obter a data de criação em timestamp e converter para Date
        timestamp = os.path.getmtime(f"{caminho}{file}")
        created_at = datetime.datetime.fromtimestamp(timestamp).date()
        
        # Alimentar o Dicionario
        dict_arquivos['file'].append(file)
        dict_arquivos['created_at'].append(created_at)

# Criar o DataFrame com esses dados
df_file = pd.DataFrame(dict_arquivos)

# Ordernar os dados pela data de criação
df_file = df_file.sort_values(by =['created_at'])

image.png

Essa foi a forma que construí aqui o algoritmo, lembrando que há formas mais rápidas, mas essa foi a que consegui nesse tempo, espero que lhe ajude.

Artigo consultado para obter a data de criação: Python Get File Creation and Modification DateTime

Espero que seja isso que precise, caso contrario estou a disposição para ajudar.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...