思路:
1.在该文件夹里面创建子文件夹
2.判断该文件夹里面所有文件的格式,也就是什么后缀名
3.将文件进行重命名并放入刚创建好的子文件夹中
4.两种整理办法:
(1)利用shutil.copy
这个函数进行复制到子文件夹中
(2)利用shutil.move
这个函数进行剪切到子文件夹中
演示:
一.整理前的文件夹:
二.代码:
方法一:复制版代码
import os
import shutil
lj = 'D:\Desktop\自动整理' #文件夹的路径
os.mkdir(lj + './视频') #创建子文件夹,命名为视频
sp = lj + './视频' #拼接成一个该子文件夹(视频)的字符串
sp_path = os.path.abspath(sp) #返回该文件夹的绝对路径
os.mkdir(lj + './照片') #创建子文件夹,命名为照片
zp = lj + './照片' #拼接成一个该子文件夹(照片)的字符串
zp_path = os.path.abspath(zp) #返回该文件夹的绝对路径
os.mkdir(lj + './音乐') #创建子文件夹,命名为照片
music = lj + './音乐' #拼接成一个该子文件夹(照片)的字符串
music_path = os.path.abspath(music) #返回该文件夹的绝对路径
i = 1
j = 1
m = 1
for file in os.listdir(lj): #遍历文件夹里面的文件:
if file.endswith('.jpg'): #判断是不是ipg格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(zp_path + './' + str(i) + '.jpg') #生成新的照片的绝对路径
shutil.copy(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
i += 1
if file.endswith('.mp4'): #判断是不是MP4格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(sp_path + './' + str(j) + '.mp4') #生成新的照片的绝对路径
shutil.copy(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
j += 1
if file.endswith('.png'): #判断是不是png格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(zp_path + './' + str(i) + '.png') #生成新的照片的绝对路径
shutil.copy(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
i += 1
if file.endswith('.jpeg'): #判断是不是jpeg格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(zp_path + './' + str(i) + '.jpeg') #生成新的照片的绝对路径
shutil.copy(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
i += 1
if file.endswith('.mp3'): #判断是不是jpeg格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(music_path + './' + str(m) + '.mp3') #生成新的照片的绝对路径
shutil.copy(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
m += 1
方法二:剪切版代码:
import os
import shutil
lj = 'D:\Desktop\自动整理' #文件夹的路径
os.mkdir(lj + './视频') #创建子文件夹,命名为视频
sp = lj + './视频' #拼接成一个该子文件夹(视频)的字符串
sp_path = os.path.abspath(sp) #返回该文件夹的绝对路径
os.mkdir(lj + './照片') #创建子文件夹,命名为照片
zp = lj + './照片' #拼接成一个该子文件夹(照片)的字符串
zp_path = os.path.abspath(zp) #返回该文件夹的绝对路径
os.mkdir(lj + './音乐') #创建子文件夹,命名为照片
music = lj + './音乐' #拼接成一个该子文件夹(照片)的字符串
music_path = os.path.abspath(music) #返回该文件夹的绝对路径
i = 1
j = 1
m = 1
for file in os.listdir(lj): #遍历文件夹里面的文件:
if file.endswith('.jpg'): #判断是不是ipg格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(zp_path + './' + str(i) + '.jpg') #生成新的照片的绝对路径
shutil.move(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
i += 1
if file.endswith('.mp4'): #判断是不是MP4格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(sp_path + './' + str(j) + '.mp4') #生成新的照片的绝对路径
shutil.move(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
j += 1
if file.endswith('.png'): #判断是不是png格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(zp_path + './' + str(i) + '.png') #生成新的照片的绝对路径
shutil.move(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
i += 1
if file.endswith('.jpeg'): #判断是不是jpeg格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(zp_path + './' + str(i) + '.jpeg') #生成新的照片的绝对路径
shutil.move(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
i += 1
if file.endswith('.mp3'): #判断是不是jpeg格式的照片
oldpath = os.path.abspath(lj + './' + str(file)) #生成旧的照片的绝对路径
newpath = os.path.abspath(music_path + './' + str(m) + '.mp3') #生成新的照片的绝对路径
shutil.move(os.path.abspath(oldpath), os.path.abspath(newpath)) #复制到新的文件夹里
m += 1
其实这两个代码都是大同小异,只是把shutil.copy
变成了shutil.move
,其他都是一模一样的
三.效果:
方法一的效果:
创建了三个新的子文件夹(音乐,照片,视频),然后复制和重命名了文件名到了新的子文件夹中。
方法二的效果:
创建了三新的子文件夹(照片,音乐,视频),然后剪切和重命名了文件到了新的子文件夹中。
四.总结:
第一个,这个代码,主要用到os
和shutil
这两个模块,属于学习文件操作里面的内容。
第二个,这是一个面向过程的代码,代码其实很简单,然后也很容易理解,这对在写面向对象的代码时有帮助。
第三个,无论想写多么优秀和优雅的代码,先要把基本功练好,但更重要的是个人的思维能力。