




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python批量操作Excel文件详解目录批量操作OS模块介绍OS模块基本操作获取当前工作路径获取一个文件夹下的所有文件名对文件名进行重命名创建一个文件夹删除一个文件夹删除一个文件利用OS模块进行批量操作批量读取一个文件下的多个文件批量创建文件夹批量重命名文件其他批量操作批量合并多个文件将一份文件按照指定列拆分成多个文件
批量操作
OS模块介绍
OS的全称是OperationSystem,指操作系统。在Python里面OS模块中主要提供了与操作系统即电脑系统之间进行交互的一些功能。我们很多的自动化操作都会依赖于该模块的功能。
OS模块基本操作
获取当前工作路径
我们在最开始Python基础知识那一章节给讲了如何安装Anaconda以及如何利用Jupyternotebook写代码。可是你们知道你们写在Jupyternotebook里面的代码存储在电脑的哪里吗?
是不是很多同学不知道?想要知道也很简单,只需要在Jupyternotebook中输入如下代码,然后运行:
importos
os.getcwd()
运行上面代码会得到如下结果:
'C:\\Users\\zhangjunhong\\python库\\Python报表自动化'
上面这个文件路径就是此时notebook代码文件所在的路径,你的代码存储在哪个文件路径下,运行就会得到对应结果。
获取一个文件夹下的所有文件名
我们经常会将电脑本地的文件导入到Python中来处理,在导入之前需要知道文件的存储路径以及文件名。如果只有一两个文件的话还好,我们直接把文件名和文件路径手动输入即可,但是有的时候需要导入的文件会有很多。这个时候手动输入效率就会比较低,就需要借助代码来提高效率。
如下文件夹中有四个Excel文件:
我们可以使用os.listdir(path)来获取path路径下所有的文件名。具体实现代码如下:
importos
os.listdir('D:/Data-Science/share/data/test')
运行上面代码会得到如下结果:
['3月绩效-张明明.xlsx','李旦3月绩效.xlsx','王玥月-3月绩效.xlsx','陈凯3月份绩效.xlsx']
对文件名进行重命名
对文件进行重命名也是比较高频的一种需求,我们可以利用os.rename('old_name','new_name')来对文件进行重命名。old_name就是旧文件名,new_name就是新文件名。
我们先在test文件夹下面新建一个名为test_old的文件,然后再利用如下代码,就可以把test_old文件名改成test_new:
os.rename('D:/Data-Science/share/data/test/test_old.xlsx'
,'D:/Data-Science/share/data/test/test_new.xlsx')
运行上面代码以后,再到test文件夹下面,就可以看到test_old文件已经不存在了,只有test_new。
创建一个文件夹
当我们想要在指定路径下创建一个新的文件夹时,可以选择手动新建文件夹,也可以利用os.mkdir(path)进行新建,只需要指明具体的路径(path)即可。
如下所示,当我们运行下面代码,就表示在D:/Data-Science/share/data路径下新建一个名为test11的文件夹:
os.mkdir('D:/Data-Science/share/data/test11')
删除一个文件夹
删除文件夹与创建文件夹是相对应的,当然了,我们也可以选择手动删除一个文件夹,也可以利用os.removedirs(path)进行删除,指明要删除的路径(path)。
如下所示,当我们运行如下代码,就表示把刚刚创建的test11文件夹删除了:
os.removedirs('D:/Data-Science/share/data/test11')
删除一个文件
删除文件时删除一个具体的文件,而删除文件夹是将一整个文件夹,包含文件夹中的所有文件进行删除。删除文件利用的是os.remove(path),指明文件所在的路径(path)。
如下所示,当我们运行如下代码,就表示将test文件夹中test_new文件进行删除:
os.remove('D:/Data-Science/share/data/test/test_new.xlsx')
利用OS模块进行批量操作
批量读取一个文件下的多个文件
有的时候一个文件夹下面会包含多个相类似的文件,比如一个部门不同人的绩效文件,我们需要把这些文件批量读取到Python里面中,然后进行处理。
我们在前面学过,如何读取一个文件,可以用load_work,也可以用read_excel,不管用哪种方式,都只需要指明要读取文件的路径即可。
那如何批量读取呢?先获取该文件下的所有文件名,然后再遍历读取每一个文件。具体实现代码如下所示:
importpandasaspd
#获取文件夹下的所有文件名
name_list=os.listdir('D:/Data-Science/share/data/test')
#for循环遍历读取
foriinname_list:
df=pd.read_excel(r'D:/Data-Science/share/data/test/'+i)
print('{}读取完成!'.format(i))
如果要对读取进来的文件进行数据操作的时候,把具体的操作实现代码放置在读取代码之后即可。比如我们要对每一个读取进来的文件进行删除重复值处理,实现代码如下:
importpandasaspd
#获取文件夹下的所有文件名
name_list=os.listdir('D:/Data-Science/share/data/test')
#for循环遍历读取
foriinname_list:
df=pd.read_excel(r'D:/Data-Science/share/data/test/'+i)
df=df.drop_duplicates()#删除重复值处理
print('{}读取完成!'.format(i))
批量创建文件夹
有的时候我们需要根据特定的主题来创建特定的文件夹,比如需要根据月份创建12个文件夹。我们前面学过如何创建单个文件夹,要批量创建多个文件夹,只需要遍历执行单个文件夹的语句即可。具体实现代码如下:
month_num=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
foriinmonth_num:
os.mkdir('D:/Data-Science/share/data/'+i)
print('{}创建完成!'.format(i))
运行上面代码以后就会在该文件路径下新建了12个文件夹:
批量重命名文件
有的时候我们有好多相同主题的文件,但是这些文件的文件名比较混乱,比如下面这些文件,是各个员工的3月绩效情况,但是命名格式都不太一样,我们要将其统一成名字+3月绩效这样的格式。要达到这种效果,可以通过前面学到的对文件进行重命名操作来实现,前面只讲了对单一文件的操作,那如何同时对多个文件进行批量操作呢?
具体实现代码如下:
importos
#获取指定文件下所有文件名
old_name=os.listdir('D:/Data-Science/share/data/test')
name=["张明明","李旦","王玥月","陈凯"]
#遍历每一个姓名
forninname:
#遍历每一个旧文件名
foroinold_name:
#判断旧文件名中是否包含特定的姓名
#如果包含就进行重命名
ifnino:
os.rename('D:/Data-Science/share/data/test/'+o,'D:/Data-Science/share/data/test/'+n+"3月绩效.xlsx")
运行上面代码以后可以看到文件下的原文件名全部已被重命名完成。
其他批量操作
批量合并多个文件
如下所示,该文件夹下面有1-6月的分月销售日报,已知这些日报的结构是相同的,只有日期和销量两列,现在我们想要把这些不同月份的日报合并成一份。
将分月销售日报合并成一份文件的具体实现代码如下:
importos
importpandasaspd
#获取指定文件下所有文件名
name_list=os.listdir('D:/Data-Science/share/data/sale_data')
#创建一个相同结构的空DataFrame
df_o=pd.DataFrame({'日期':[],'销量':[]})
#遍历读取每一个文件
foriinname_list:
df=pd.read_excel(r'D:/Data-Science/share/data/sale_data/'+i)
#进行纵向拼接
df_v=pd.concat([df_o,df])
#把拼接后的结果赋值给df_o
df_o=df_v
df_o
运行上面代码就会得到合并后的文件df_o,如下所示:
将一份文件按照指定列拆分成多个文件
上面讲了如何批量合并多个文件,我们也有合并多个文件逆需求,即按照指定列将一个文件拆分成多个文件。
还是上面的数据集,假设我们现在拿到了一份1-6月份的文件,这份文件除了日期和销量两列以外,还多了一列月份,现在我们需要做的就是根据月份这一列将这一份文件拆分成多个文件,每个月份单独存储为一个文件。
具体实现代码如下:
#生成一列新的月份列
df_o['月份']=df_o['日期'].apply(lambdax:x.month
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学徒合同协议书百度库
- 经济学微观试题及答案
- 合同权益转让协议书
- 钉钉项目管理试题及答案
- 出售合同协议书
- 货源合同协议书
- 校车转让合同协议书范本
- 租凭农田合同协议书
- 租地合同协议书广告
- 代理协议书和合同
- CJT244-2016 游泳池水质标准
- 纳税人(扣缴义务人)基础信息报告表
- JT-T-1180.1-2018交通运输企业安全生产标准化建设基本规范第1部分:总体要求
- 国能辽宁北票200MW 风力发电项目可行性研究
- 泛血管疾病抗栓治疗中国专家共识(2024版)
- 盐脂酸热:制造美味的新科学-正式版美萨明·诺斯拉特
- 幼儿园中班数学课件:《理解数字符号的意义-查查路线》
- 2024年高考语文阅读之李娟散文专练全国解析版
- 《红楼梦》知识点
- 斯派克直读光谱M10 操作手册
- MOOC 孙子兵法-湖南大学 中国大学慕课答案
评论
0/150
提交评论