Как прочитать несколько текстовых файлов из каталога, преобразовать их все в файлы Excel

#python #python-3.x #pandas #jupyter-notebook #file-handling

#python #python-3.x #pandas #jupyter-ноутбук #обработка файлов

Вопрос:

В моем локальном каталоге есть 10 текстовых файлов с разделителями табуляции. Когда я копирую и вставляю текстовый файл в лист Excel, он превращается в файл, содержащий 100 столбцов. Теперь я хотел бы прочитать все текстовые файлы и преобразовать их в соответствующие файлы Excel.

Если бы был один файл, я бы поступил следующим образом:

 import pandas as pd
df = pd.read_csv("H:\Yugeen\text1.txt", sep='t')
df.to_excel('H:\Yugeen\output1.xlsx', 'Sheet1', index = False)
  

Есть ли какой-нибудь способ найти решение, которое я ищу?

Комментарии:

1. Безусловно, есть. Вам следует изучить программную конструкцию, называемую a for -loop .

2. @AryaMcCarthy Я знаю для цикла. Я не уверен в обработке файлов, поэтому я задал этот вопрос здесь.

Ответ №1:

Я использую эту функцию для перечисления всех файлов в каталоге вместе с их путем к файлу:

 import os

def list_files_in_directory(path):
    '''docstring for list_files_in_directory'''
    x = []
    for root, dirs, files in os.walk('.' path):
        for file in files:
            x.append(root '/' file)
    return x
  

Выбор только для текстовых файлов:

 files = list_files_in_directory('.')
filtered_files = [i for i in files if '.txt' in i]
  

Как продемонстрировала София, вы можете использовать pandas для создания фрейма данных. Я предполагаю, что вы также хотите объединить эти файлы.

 import pandas as pd

dfs = []
for file in filtered_files:
    df = pd.read_csv(file,sep='t')
    dfs.append(df)

df_master = pd.concat(dfs,axis=1)
filename = 'master_dataframe.csv'
df_master.to_csv(filename,index=False)
  

Затем сохраненный файл можно открыть в Excel.

Ответ №2:

Вы говорите о том, как получить имена файлов? Вы можете использовать glob библиотеку.

 import glob
import pandas as pd

file_paths = glob.glob('your-directory\*.txt')
for file in file_path:
    df = pd.read_csv(file,sep='t')
    df.to_excel('output-directory\filename.xlsx',index=False)
  

Это отвечает на ваш вопрос?