#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)
Это отвечает на ваш вопрос?