前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五分钟学 | 自动化整理文件,是你需要的!

五分钟学 | 自动化整理文件,是你需要的!

作者头像
周萝卜
发布2020-10-30 12:40:23
4980
发布2020-10-30 12:40:23
举报
文章被收录于专栏:萝卜大杂烩萝卜大杂烩

有的时候,电脑用的时间长了,难免会有太多的文件分散在世界(电脑)各地(分区)中,不同类型的文件掺杂在一起,每次要找起来实在是太痛苦了。很多时候都想好好的动手整理一番,但是无奈时间太少(主要是懒),都搁浅了,今天终于下定决心,写一个小程序,来一键完成文件整理,一起来看看吧!

按照文件格式整理

首先我们先来按照文件格式整理,具体来说就是不同的文件后缀名称放置到不同的文件夹当中,如下图这样

是不是看起来相当的清爽啊!

逻辑实现

要实现上面的功能,我们只需要使用 os 和 shutil 两个库就足够了。os 不用多说了,大名鼎鼎的操作系统层面的库,而 shutil 则用来完成文件的移动等操作。

我们先来获取文件的后缀名,方法有很多,我们简单介绍几种

Way1

通过 os 库的方法实现

代码语言:javascript
复制
filename = os.path.splitext('1.jpg')

这样可以得到一个元组,分别是文件的名称和后缀名

('1', '.jpg')

那么再要得到具体的后缀名就很容易了吧

Way2

使用字符串方法 endwith,这个方法也是字符串的一个非常常用的方法哦

代码语言:javascript
复制
file = "1.jpg".endswith(".jpg")

如果结尾字符是 “.jpg” 的话,那么该方法的返回值则为 True,以此我们可以判断文件的后缀名

Way3

通过字符串的 split 方法来提取后缀名

代码语言:javascript
复制
file1 = "1.jpg".split('.')

这样可以得到一个列表,第一个元素就是文件名,第二个元素则是后缀名

接下来我们就是创建对应的文件夹和拷贝文件了,分别用 os.mkdir 和 shutil.copy 来操作即可。

下面我们用 Way1 的方法在当前目录下尝试下

代码语言:javascript
复制
import os
import shutil


files = os.listdir(".")

for f in files:
    if os.path.isfile(f) and not f.startswith('.'):
        folder_name = os.path.splitext(f)[-1]
        folder_name = folder_name.split(".")[-1]
        print(folder_name)
        if not os.path.exists(folder_name):
            os.mkdir(folder_name)
            shutil.copy(f, folder_name)
        else:
            shutil.copy(f, folder_name)

通过上面的代码,我们就可以在当前目录下顺利的整理文件了

当然了,我们也可以使用 Way2 或者 Way3 的方式,只不过需要一些改动。

按照文件大小整理

有的时候,我们也希望把大小类似的文件整理到同一个文件夹当中,那么该如何使用呢?我们可以通过 os 库的 getsize 函数来获取

代码语言:javascript
复制
print(os.path.getsize("1.jpg"))

这样就可以得到该文件的大小,单位是 KB

这样,我们通过文件大小来整理文件的代码也呼之欲出了

代码语言:javascript
复制
import os
import shutil


files = os.listdir(".")

for f in files:
    if os.path.isfile(f) and not f.startswith('.'):
        size = os.path.getsize(f)
        if size < 1000:
            folder_name = "Under_one_MB"
            if not os.path.exists(folder_name):
                os.mkdir(folder_name)
                shutil.copy(f, folder_name)
            else:
                shutil.copy(f, folder_name)
        elif 10000 <= size < 2000:
            folder_name = "Under_two_MB"
            if not os.path.exists(folder_name):
                os.mkdir(folder_name)
                shutil.copy(f, folder_name)
            else:
                shutil.copy(f, folder_name)

怎么样,是不是蛮简单有效的,好了,今天的分享就到这里了,我们下次再见!

点点 在看 行不行

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 按照文件格式整理
  • 逻辑实现
    • Way1
      • Way2
        • Way3
          • 按照文件大小整理
          相关产品与服务
          云开发 CloudBase
          云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档