专栏首页Python与Excel之交python中几秒钟就能批量处理文件的几种操作!最后一种很常见!

python中几秒钟就能批量处理文件的几种操作!最后一种很常见!

Hi~ 大家好!

本文讲解一些我在生活中遇到或者想到的内容,其中一些操作如果一个一个的进行,会很累,所以本文用python进行简化操作,节省时间。本文会用到osshutil以及pandas模块,其中osshutil本文会交叉使用,进行互补。

本次示例数据就不用猫眼电影100了,换个新的,一份前员工名单:

以及一份离职员工信息:

创建文件

导入模块

import pandas as pd
import os
import shutil

先创建单个文件夹,判断文件夹是否存在,不存在则创建单个文件夹,后面的案例都在该文件夹中进行:

if not os.path.exists('员工档案'):
    os.mkdir('员工档案')

那如何在一级文件夹中按指定名称创建多个文件夹呢?可以先导入需要创建文件夹的名称,接着进行循环取值:

df = pd.read_csv('员工名单.csv', encoding='utf-8')
for i in df['姓名']:
    if not os.path.exists('./员工档案/' + i):
        os.mkdir('./员工档案/' + i)

而如果需要在二级文件夹里面继续创建文件,用os.mkdir他会报错:

FileNotFoundError: [WinError 3] 系统找不到指定的路径。: './员工档案/丑八怪/丑八怪'

所以需要用os.makedirs进行创建:

df = pd.read_csv('员工名单.csv', encoding='utf-8')
for i in df['姓名']:
    path = './员工档案/' + i + '/' + i
    if not os.path.exists(path):
        os.makedirs(path)

当然,一般很少会创建三级文件夹的,但会在二级文件夹里面创建一些其它文件。但你会发现,os他只能创建文件夹,而无法直接创建其它类型的文件;所以在此条件下我们要在二级文件夹里面创建其它文件,我们需要借用其它的模块;这里以创建excel表格为例,需要用到pandas模块:

df = pd.read_csv('员工名单.csv', encoding='utf-8')
for i in df['姓名']:
    path = './员工档案/' + i + '/'
    if not os.path.exists(path):
        os.makedirs(path)
    df1 = pd.ExcelWriter(path + f'{i}.xlsx')
    df1.close()

在这里插入图片描述

移动文件以及重命名文件

移动单个文件并且重命名可以用os.rename(src, dst),src和dst为两个路径,分别表示重命名之前和之后的路径,但需要注意的是:移动时必须重命名,否则会报错。

os.rename('./员工档案/丑八怪', './员工档案/乌鸦/丑八啊啊')

而只需要移动可以用上面的shutil模块中的move函数:

shutil.move('./员工档案/乌鸦', './员工档案/丑八怪')

而如果需要把二级文件夹中的excel文件移动到一级文件夹下,应该进行以下操作:

for e in os.listdir('./员工档案'): # 取出一级文件夹下的所有文件名称
    for i in os.listdir(f'./员工档案/{e}'): # 取出二级文件夹下的所有文件名称
        shutil.move(f'./员工档案/{e}/{i}', './员工档案')

如果你要移动文件且重命名,可以在shutil.move中或者把shutil.move更改为os.rename,并在移动后的路径中增加修改字样:

shutil.move(f'./员工档案/{e}/{i}', './员工档案/2021_{i}')
os.rename(f'./员工档案/{e}/{i}', f'./员工档案/2021_{i}')

删除文件

删除单个文件夹,可以直接用shutilrmtree函数,而os他只能删除空的文件夹:

shutil.rmtree('员工档案')

如果员工档案中,某些员工已经离职,需要删除其对应的文件,或者删除一些不需要的文件:

则依然使用个for循环即可:

df = pd.read_csv('离职员工.csv', encoding='utf-8')
for i in df['姓名']:
    shutil.rmtree(f'./员工档案/{i}')

那么如何快速的从二级文件夹中删除离职员工对应的excel文件:

这时你如果直接用shutil.rmtree他是删除不了一个文件的,而os虽然无法删除有文件的目录,但他可以直接删除一个文件:

df = pd.read_csv('离职员工.csv', encoding='utf-8')
for i in df['姓名']:
    if os.path.exists(f'./员工档案/{i}'): # 需要判断是否存在文件
        for e in os.listdir(f'./员工档案/{i}'): # 取出文件夹中的文件名称
            os.remove(f'./员工档案/{i}/{e}')

本文分享自微信公众号 - Python与Excel之交(Yi-Python-Excel),作者:锋小刀

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 我用 pyhton 做了款可开淘宝店赚钱的工具

    之前给大家介绍了一款 AI 抠图神器:Remove.bg ,使用 Python 调用 API 快速完成了照片抠图和证件照换底色,5 秒钟就能搞定一张图片,效果相...

    数据森麟
  • 1分钟插入10亿行数据!抛弃Python,写脚本请使用Rust

    于是,他又做了一个所有程序员都会做的事:进一步学习关于SQLite、Python以及不知道为什么还有Rust的知识。

    昱良
  • 我用 pyhton 做了款可开淘宝店赚钱的工具

    之前给大家介绍了一款 AI 抠图神器:Remove.bg ,使用 Python 调用 API 快速完成了照片抠图和证件照换底色,5 秒钟就能搞定一张图片,效果相...

    龙哥
  • Python读取PDF信息插入Word文档

    Hello,上个周末没能搞事情,被一个代码需求给绊住了:朋友在平时工作中会经常重复性地打开不同PDF文件,选取其中特定的几组信息复制粘贴到不同的Word文档中,...

    TTTEED
  • 高频访问SQLite数据库

    SQLite 是一款开源的 SQL 数据库引擎,由于其自包含、无服务、零配置和友好的使用许可(完全免费)等特点,在桌面和移动平台被广泛使用。

    天存信息
  • 我用Python做了款可开淘宝店赚钱的工具

    之前给大家介绍了一款 AI 抠图神器:Remove.bg,使用 Python 调用 API 快速完成了照片抠图和证件照换底色,5 秒钟就能搞定一张图片,效果相当...

    华章科技
  • 不得不看,只有专家才知道的17个SQL查询提速秘诀!

    “ 除非你遵循本文介绍的这些技巧,否则很容易编写出减慢查询速度或锁死数据库的数据库代码。 ? 由于数据库领域仍相对不成熟,每个平台上的 SQL 开发人员都在苦苦...

    企鹅号小编
  • 教你几招,快速创建 MySQL 五百万级数据,愉快的学习各种优化技巧

    如果你打算好好学习一下 MySQL,性能优化肯定是绕不过去一个问题。当你撸起袖子准备开始的时候,突然发现一个问题摆在眼前,本地数据库中没那么大的数据量啊,几条数...

    古时的风筝
  • 如何批量添加中文和英文数字之间的空格?用正则表达式吧

    但我们可能尚未养成这样的输入习惯,以至于要么全部没有空格,要么部分加了空格,部分没有。当然您可以不在乎这个文本规范。对于那些在意这个文本规范的人,想要规范格式,...

    刘娟娟PRESSone
  • 实时流处理Storm、Spark Streaming、Samza、Flink对比

    分布式流处理需求日益增加,包括支付交易、社交网络、物联网(IOT)、系统监控等。业界对流处理已经有几种适用的框架来解决,下面我们来比较各流处理框架的相同点以及区...

    Albert陈凯
  • Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized ...

    片刻
  • 【数据分析丨主题周】用Python脚本模仿Hadoop处理大数据

    大数据通常用来形容一个公司创造的大量非结构化和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多的时间和金钱。大数据分析常和云计算联系在一起,因为实...

    博文视点Broadview
  • Stream 主流流处理框架比较(1)

    分布式流处理是对无边界数据集进行连续不断的处理、聚合和分析。它跟MapReduce一样是一种通用计算,但我们期望延迟在毫秒或者秒级别。这类系统一般采用有向无环图...

    smartsi
  • 该如何选择消息队列?

    在高并发业务场景下,消息队列在流量削峰、解耦上有不可替代的作用。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、Ze...

    武培轩
  • 该如何选择消息队列?

    在高并发业务场景下,消息队列在流量削峰、解耦上有不可替代的作用。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、Ze...

    武培轩
  • 如何选择消息队列?

    在高并发业务场景下,消息队列在流量削峰、解耦上有不可替代的作用。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、Ze...

    Bug开发工程师
  • 如何选择消息队列?

    在高并发业务场景下,消息队列在流量削峰、解耦上有不可替代的作用。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、Ze...

    范蠡
  • 用Python写了个金融数据爬虫,半小时干了组里实习生一周的工作量,笑了

    最近,越来越多的研究员、基金经理甚至财务会计领域的朋友,向小编咨询:金融人需要学Python么?

    一墨编程学习
  • RTX 2080时代,如何打造属于自己的深度学习机器

    作者曾在 2015 年写过一版深度学习硬件推荐的文章,但如今计算机硬件的迭代速度非常快,因此作者在近期将原来的文章进行了大幅改动,写出了第二版深度学习硬件推荐。

    机器之心

扫码关注云+社区

领取腾讯云代金券