1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python 批量把xls csv文件格式换转为xlsx格式

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

时间:2018-10-28 07:08:55

相关推荐

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 osimport pandas as pddef 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写入xlsxprint(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) #调用一下,转换完成

测试:

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

知识点:

os.walk() 遍历文件夹;

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

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

os.remove()删除文件;

pd.read_csv()pandas读xls;

to_excel()pandas写入xlsx;

csv指定encoding

代码:

import osimport pandas as pddef 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) #调用一下,转换完成

测试:

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

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

知识点:

os库的基本用法;

pandas库的读写;

win32com打开窗口;

代码:

import osimport pandas as pdimport easygui as eg# xls文件转xlsxdef 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写入xlsxprint(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')print('-----------------------------------------------------------------------------------------------------------')os.remove(file_name) #删除原xls文件#csv文件转xlsxdef 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...')

测试:

转换前:

运行效果:

转换后:

总结

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。