Я новичок в 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 отдельно, как показано выше.
Ценю вашу помощь!
Вот простое решение, которое поможет вам начать:
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")```
Изучите
os.listdir
, а также модулиglob
иpathlib
.