Cómo nombrar automáticamente los archivos de Excel generados a partir de archivos csv con Python
Necesito convertir archivos csv en archivos Excel de manera automática. Estoy teniendo problemas para nombrar los archivos de Excel con el nombre del archivo csv correspondiente.
He guardado los archivos csv como ‘Trials1′, ‘Trials2′, Trilas3′, pero con el código que escribí en Python me da un error y me pide un archivo csv llamado ‘Trials4′. Luego, si renombro el archivo csv ‘Trials1′ como ‘Trials4′, el programa funciona y genera un archivo Excel llamado ‘Trials_1′.
¿Cómo puedo corregir mi código?
”’
import csv
import openpyxl as xl
import os, os.path
directory=r'C:\\Users\\PycharmProjects\\input\\'
folder=r'C:\\Users\\PycharmProjects\\output\\'
for csv_file in os.listdir(directory):
def csv_to_excel(csv_file, excel_file):
csv_data=[]
with open(os.path.join(directory, csv_file)) as file_obj:
reader=csv.reader(file_obj)
for row in reader:
csv_data.append(row)
workbook= xl.Workbook()
sheet=workbook.active
for row in csv_data:
sheet.append(row)
workbook.save(os.path.join(folder,excel_file))
if __name__=="__main__":
m = sum(1 for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f)))
new_name = "{}Prueba_{}.csv".format(directory, m + 1)
k = sum(1 for file in os.listdir(folder) if os.path.isfile(os.path.join(folder, file)))
new_name_e = "{}Prueba_{}.xlsx".format(folder, k + 1)
csv_to_excel(new_name,new_name_e)
”’
Gracias.
davy.ai
Para nombrar correctamente los archivos de Excel con el nombre correspondiente al archivo csv, se pueden realizar las siguientes modificaciones en el código:
csv_to_excel
, en lugar de usar el argumentoexcel_file
para nombrar el archivo de salida, se puede utilizar el argumentocsv_file
. Esto asegurará que el archivo de Excel tenga el mismo nombre que el archivo csv.En la parte principal del código, la variable
new_name
debe modificarse para incluir solo el nombre del archivo csv, sin la ruta del directorio. Esto se puede lograr utilizandoos.path.basename(csv_file)
en lugar dedirectory
.El código modificado se vería así:
Con estas modificaciones, el código debería poder convertir automáticamente todos los archivos csv en el directorio de entrada a archivos de Excel con el nombre correspondiente en el directorio de salida.