python 批量把xls,csv文件格式换转为xlsx格式

目录

前言

第一版 文件夹下所有xls转换为xlsx格式

第二版 文件夹下所有csv转换为xlsx格式

第三版 增加窗口组件,csv,xls转化为xlsx

总结





前言

        西瓜WiFi初来乍到,数据清洗入门,规范文件格式,特此总结。收到的文件中以excel xls和xlsx为主,其中夹杂着csv,jpg和png,清洗完数据统一为xlsx格式,导入系统。


提示:以下是本篇文章正文内容,下面案例可供参考



第一版 文件夹下所有xls转换为xlsx格式

知识点:

os.walk()  遍历文件夹;

os.path.join()合并路径;

os.path.spiltext()分解扩展名;

os.remove()删除文件;

pd.read_excel()pandas读xls;

to_excel()pandas写入xlsx;


代码:

import os
import pandas as pd

def xls_save_as_xlsx(data_path):
    for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
            folder,name=os.path.splitext(file_name)  #分解扩展名
            if file_name.endswith('.xls'):
                df=pd.read_excel(file_name)  #pandas读xls文件
                df.to_excel(f"{folder}.xlsx",index=False)  #pandas写入xlsx
                print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
                print('-----------------------------------------------------------------------------------------------------------')
                os.remove(file_name)  #删除原xls文件
    print('finisded...')
data_path=r"C:\Users\GDY\Desktop\测试" #文件路径
xls_save_as_xlsx(data_path)   #调用一下,转换完成

测试: 

python 批量把xls,csv文件格式换转为xlsx格式_第1张图片



第二版 文件夹下所有csv转换为xlsx格式



知识点:

os.walk()  遍历文件夹;

os.path.join()合并路径;

os.path.spiltext()分解扩展名;

os.remove()删除文件;

pd.read_csv()pandas读xls;

to_excel()pandas写入xlsx;

csv指定encoding


代码: 

import os
import pandas as pd
def csv_save_as_xlsx(data_path):
    for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
            if file_name.endswith('.csv'):
                df=pd.read_csv(file_name) 
                floder,name=os.path.splitext(file_name) #分割后缀
                df.to_excel(f"{floder}.xlsx",index=False)
                print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
                print('-----------------------------------------------------------------------------------------------------------')
                os.remove(file_name)
    print('finished...')
data_path=r"C:\Users\GDY\Desktop\测试"
csv_save_as_xlsx(data_path)  #调用一下,转换完成

测试:

 python 批量把xls,csv文件格式换转为xlsx格式_第2张图片

说明:pandas 读取csv,需要指定编码方式,python默认编码方式是 UTF-8 ,个人理解csv编码可是UTF-8和GBK ,是GBK的时候需要指定encoding='gbk'

第三版 增加窗口组件,csv,xls转化为xlsx

 知识点:

os库的基本用法;

pandas库的读写;

win32com打开窗口;


代码:

import os
import pandas as pd
import easygui as eg
# xls文件转xlsx
def xls_save_as_xlsx(file_name):
    df=pd.read_excel(file_name)  #pandas读xls文件
    file,name=os.path.splitext(file_name)  #分解扩展名
    df.to_excel(f"{file}.xlsx",index=False)  #pandas写入xlsx
    print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
    print('-----------------------------------------------------------------------------------------------------------')
    os.remove(file_name)  #删除原xls文件
#csv文件转xlsx
def csv_save_as_xlsx(file_name):
    df=pd.read_csv(file_name)  #pandas读xls文件
    file,name=os.path.splitext(file_name)  #分解扩展名
    df.to_excel(f"{file}.xlsx",index=False)
    print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
    print('-----------------------------------------------------------------------------------------------------------')
    os.remove(file_name)  #删除原csv文件
#打开窗口,选择一个文件夹 
def pick_package():
    return eg.diropenbox()

if __name__ == "__main__":
    print('欢迎来到文件转换系统,程序正在启动...')
    print('请选择要转换的文件夹')
    data_path=pick_package()
    for dirpath,dirname,filenames in os.walk(data_path): #os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)  #os.path.join()合并路径
            if file_name.endswith('.xls'):
                xls_save_as_xlsx(file_name)
            elif file_name.endswith('.csv'):
                csv_save_as_xlsx(file_name)
            else:
                print(f'跳过非xls文件:{file_name}')
    input('输入任意键退出')
    print('finished...')

测试:

转换前:

python 批量把xls,csv文件格式换转为xlsx格式_第3张图片

运行效果:

python 批量把xls,csv文件格式换转为xlsx格式_第4张图片

转换后:

python 批量把xls,csv文件格式换转为xlsx格式_第5张图片




总结

        常言道,好事多磨,通过os标准库,pandas库可以实现xls,xlsx,csv文件格式的相互转化。pandas是数据清洗分析的利器,可以实现各种复杂的操作,茅庐小子对python的探索才刚刚开始,多琢磨方能见真章。

        感谢您百忙之中的赏读,希望能有所收获,客官,点赞留言再走呗~或者一起探讨。。。

你可能感兴趣的:(数据分析,python,excel,pandas)