Как читать несколько файлов Excel, конвертировать их в отдельные файлы CSV без жесткого кодирования имени файла и пути в Python

Я новичок в Python и прошу вашей помощи в решении следующей проблемы.

У меня есть портал, на который пользователи загружают файлы. Файлы сохраняются в каталоге (/input_files/test1.xlsx). Может существовать несколько файлов, например test1.xlsx, test2.xlsx, test3.xlsx и т. д.

Мне нужно преобразовать эти файлы в CSV и сохранить их в отдельном каталоге, что я и сделал, используя приведенный ниже код

import pandas as pd

file_path = "/Users/input_files/"

read_file = pd.read_excel(file_path + "test1.xlsx")

read_file.to_csv(file_path + "input_csv_files/test1.csv", index = None, header = True)`

Мой желаемый результат
/input_files/test1.xlsx --> /input_files/input_csv_files/test1.csv
/input_files/test2.xlsx --> /input_files/input_csv_files/test2.csv
/input_files/test3.xlsx --> /input_files/input_csv_files/test3.csv .... и так далее

Я добился этого для одного файла, но хочу избавиться от жестко запрограммированного имени файла. Мне нужен код для чтения всех файлов .xlsx в каталоге и их динамического преобразования в файлы .csv отдельно, как показано выше.

Ценю вашу помощь!

Изучите os.listdir, а также модули glob и pathlib.

Mark Tolonen 05.04.2024 20:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот простое решение, которое поможет вам начать:

import os
import pandas as pd

source_directory = "/input_files/"
output_directory = os.path.join(source_directory, "input_csv_files")

all_files = [file for file in os.listdir(source_directory) if file.endswith(".xlsx")]

for filename in all_files:
    input_filepath = os.path.join(source_directory, filename)
    read_file = pd.read_excel(input_filepath)
    
    output_filepath = os.path.join(output_directory, os.path.splitext(filename)[0] + ".csv")
    read_file.to_csv(output_filepath, index=None, header=True)

Затем вы можете улучшить его в зависимости от вашего варианта использования.

Это именно то, что я искал!! Спасибо! @duartedb Это работает. Я также использовал приведенный ниже код для копирования файлов на S3. ``` s3 = boto3.resource('s3') Bucket = "mybucket-redshift-spectrum" s3_tgt_dir = "s3-input-bucket/" s3.Bucket(bucket).upload_file(output_filepath, s3_tgt_dir + os.path.splitext (имя файла)[0] + ".csv")```

sayakgt 08.04.2024 20:26

Другие вопросы по теме