Я пытаюсь преобразовать любой файл .csv с этого пути в файл excel. Код работает, но мне нужно переименовать этот CSV-файл вручную. Есть ли способ прочитать и преобразовать любой файл .csv без его переименования? Ваш вклад высоко ценится. Большое спасибо!
import pandas as pd
read_file = pd.read_csv(r'C:/Processed_Report/Source1.csv')
read_file.to_excel (r'C:/Processed_Report/Source.xlsx', index = None, header=True)
@BigBen извините, .ext там быть не должно. Я отредактировал свой вопрос. Спасибо за исправление.
Я не уверен, понял ли я, но именно так вы можете прочитать все файлы внутри папки и преобразовать их в файлы Excel.
import os
for root, dirs, files in os.walk("C:/Processed_Report/", topdown=False):
for name in files:
base_name, ext = os.path.splitext(name) #Split name, extension
if ext in ".cvs":
df = pd.read_csv(os.path.join(root, name))
df.to_excel(os.path.join(root, f'{base_name}.xlsx'))
@Christian, спасибо, что поделились кодом. После преобразования файла .csv в файл .xlsx с вашим кодом я хотел переименовать этот файл в Source.xlsx. Куда мне вставить этот код read_file.to_excel (r'C:/Processed_Report/Source.xlsx', index = None, header = True)
Потому что я получаю это сообщение об ошибке, когда вставляю это в следующую строку NameError: имя 'read_file' не определено
Измените base_name внутри функции pd.to_excel(...) следующим образом: df.to_excel(os.path.join(root, 'Source.xlsx')).
Обратите внимание, если вы используете одно и то же имя выходного файла в случае нескольких файлов csv в папке, цикл каждый раз перезаписывает выходной файл.
Дополнительный вопрос, Кристиан, если можно, столбец с числами автоматически добавляется в файл Source.xlsx. В файле CSV он имеет только 2 столбца (A, B), но в преобразованном файле Source.xlsx он добавил 1 столбец с номерами строк без заголовка, а также столбцы A и B. Любой совет, пожалуйста, спасибо
Это индексный столбец, который нужно удалить, добавить index=False, чтобы сохранить функцию df.to_excel(os.path.join(root, f'{base_name}.xlsx'), index=False)
Использование pathlib
from pathlib import Path
import pandas as pd
file_path = r"C:/Processed_Report"
files = [x for x in Path(file_path).glob("*csv")]
[pd.read_csv(x).to_excel(f"{file_path}/{x.stem}.xlsx", index=False) for x in files]
@BigBen, да, именно поэтому я ищу синтаксис в Python для преобразования любого файла .csv по этому пути без переименования имени файла вручную в файл .xlsx и переименования его в Source.xlsx Спасибо.