Python generate csv files and then convert csv files to excel files in batch

import pandas as pd
from datetime import datetime
import os
import uuid
import numpy as np

csv_dir=r'D:\PY\CSV_1'
excel_dir=r'D:\PY\EXCEL_1'

def write_multiple_csv_in_dir(dir,cnt=10):
    for i in range(1,cnt+1):
        dic=[]
        arr=range(1,100001)

        if not os.path.exists(dir):
            os.makedirs(dir)
            print(f'{datetime.now()} create {dir} successfully!')

        for a in arr:
            dic.append({
                'Id':a,
                'Name':f'Name_{a}',
                'Author':f'Author_{a}',
                'Abstract':f'Abstract_{a}',
                'Content':f'Content_{a}',
                'ISBN':f'ISBN_{a}_{uuid.uuid4().hex}',
                'Price':np.random.rand()*100,
                'Summary':f'Summary_{a}',
                'Title':f'Title_{a}',
                'Topic':f'Topic_{a}'
            })

        df=pd.DataFrame(dic)
        full_csv=os.path.join(dir,f'CSV_{i}_{datetime.now().strftime('%Y%m%d%H%M%S%f')}_{uuid.uuid4().hex}.csv')
        df.to_csv(full_csv,index=False)
        print(f'{datetime.now()} write into {full_csv}')


def convert_csv_to_excel(csvFullName,exceldir):
    if not os.path.exists(excel_dir):
        os.makedirs(excel_dir)
        print(f'{datetime.now()} create {excel_dir}')
    csv_base_name=os.path.basename(csvFullName)
    excel_full_name=os.path.join(excel_dir, os.path.splitext(csv_base_name)[0]+".xlsx")
    df=pd.read_csv(csvFullName)
    df.to_excel(excel_full_name,index=False)
    print(f'{datetime.now()} convert from {csvFullName} to {excel_full_name}')

def convert_csv_to_excel_batch(csvDir,excelDir):
    if os.path.exists(csvDir):
        csv_files=os.listdir(csvDir)
        for csv_file in csv_files:
            full_csv_file=os.path.join(csvDir,csv_file)
            if os.path.exists(full_csv_file):
                convert_csv_to_excel(full_csv_file,excelDir)

if __name__=='__main__': 
    print(f'{datetime.now()} start')
    write_multiple_csv_in_dir(csv_dir,100)
    print(f'{datetime.now()} finished write_multiple_csv_in_dir')

    convert_csv_to_excel_batch(csv_dir,excel_dir)
    print(f'{datetime.now()} finished convert_csv_to_excel_batch!')

 

 

 

 

image

 

image

 

posted @ 2025-12-10 23:00  FredGrit  阅读(4)  评论(0)    收藏  举报