有的时候,电脑用的时间长了,难免会有太多的文件分散在世界(电脑)各地(分区)中,不同类型的文件掺杂在一起,每次要找起来实在是太痛苦了。很多时候都想好好的动手整理一番,但是无奈时间太少(主要是懒),都搁浅了,今天终于下定决心,写一个小程序,来一键完成文件整理,一起来看看吧!
按照文件格式整理
首先我们先来按照文件格式整理,具体来说就是不同的文件后缀名称放置到不同的文件夹当中,如下图这样
是不是看起来相当的清爽啊!
逻辑实现
要实现上面的功能,我们只需要使用 os 和 shutil 两个库就足够了。os 不用多说了,大名鼎鼎的操作系统层面的库,而 shutil 则用来完成文件的移动等操作。
我们先来获取文件的后缀名,方法有很多,我们简单介绍几种
Way1
通过 os 库的方法实现
filename = os.path.splitext('1.jpg')
这样可以得到一个元组,分别是文件的名称和后缀名
('1', '.jpg')
那么再要得到具体的后缀名就很容易了吧
Way2
使用字符串方法 endwith,这个方法也是字符串的一个非常常用的方法哦
file = "1.jpg".endswith(".jpg")
如果结尾字符是 “.jpg” 的话,那么该方法的返回值则为 True,以此我们可以判断文件的后缀名
Way3
通过字符串的 split 方法来提取后缀名
file1 = "1.jpg".split('.')
这样可以得到一个列表,第一个元素就是文件名,第二个元素则是后缀名
接下来我们就是创建对应的文件夹和拷贝文件了,分别用 os.mkdir 和 shutil.copy 来操作即可。
下面我们用 Way1 的方法在当前目录下尝试下
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 函数来获取
print(os.path.getsize("1.jpg"))
这样就可以得到该文件的大小,单位是 KB
这样,我们通过文件大小来整理文件的代码也呼之欲出了
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)
怎么样,是不是蛮简单有效的,好了,今天的分享就到这里了,我们下次再见!