Форматирование файла excel в csv 'python' c изменением имени исходного файла

Нужна помощь, есть папка где сохраняется файл в формате xls, моя задача переcохранить в формате csv, где разделитель должен быть ";" . Пробовал через такой код

import csv
from datetime import datetime, timedelta
import pandas as pd


df = pd.read_excel(path_file\Number.csv', dtype=str)

df.to_csv(path_file\Number.csv', index = False)

файл пересохраняет в нужном формате без изменения имени файла (

Любой ответ с примером кода будет полезен, заранее благодарю!


Ответы (1 шт):

Автор решения: Exord
import csv
from datetime import datetime, timedelta
import pandas as pd


df = pd.read_excel('path_file\Number.xlsx', dtype=str)

df.to_csv(f"path_file\{datetime.now().strftime('%d-%m-%Y')}.xlsx", index=False, sep=';')

Или так:

import xlrd
import csv

def csv_from_excel():
    wb = xlrd.open_workbook('Number.xlsx')
    sh = wb.sheet_by_name('Sheet1')
    your_csv_file = open('another.csv', 'w')
    wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)

    for rownum in range(sh.nrows):
        wr.writerow(sh.row_values(rownum))

    your_csv_file.close()

csv_from_excel()

Или можно ещё так:

import openpyxl
import csv

wb = openpyxl.load_workbook('number.xlsx')
sh = wb.active
with open('test.csv', 'w', newline=""):
    c = csv.writer(f)
    for r in sh.rows:
        c.writerow([cell.value for cell in r])

Последние 2 способа лучше, потому что не используется - (pandas) который весит под 100 метров, (и тянет в зависимостях numpy, который весит примерно столько же), что бы сделать такую простую задачу.

А ещё пандас законвертирует вам все нули, так что можно потерять некоторые данные.

→ Ссылка