python学习记录-文件操作-文件的重命名,分类和移动-数据整理
一.os库
在拆电脑的时候会用到螺丝刀等工具,而os库就是我们用来对文件进行操作的工具箱。里面有大佬已经编写好的工具,在使用的时候只需要在文件开头导入即可在后续的代码中使用
import os
二.此次要用到的函数
os.listdir()
获取目标路径下文件及文件夹的名字,并将其存贮与列表[]中输出例1:os.listdir()
path = ".\\dataset"#设置数据所在路径,其中.\表示相对路径 filelist = os.listdir(path)
此处先定义了path,将文件所在的目录的路径放在其中,并使用os.listdir()获取path路径下的所有文件及文件夹的名字,输出为列表,放置在filelist之中
os.getcwd()
获取当前工作目录,即.py文件所在的绝对路径
例2:os.getcwd()
path1 = os.getcwd()#获取路径
此处定义了一个名为path1的变量用来存贮.py文件的绝对路径,用于之后的改名
os.path.join()
将不同的路径相加,用于文件的改名
例3:os.path.join()
oldpath = os.path.join(path1+"\\dataset\\"+filename)
此处用os.path.join()将path1,字符串"\dataset\"和filename相加,获得了一个新的路径,并存储到oldpath这个变量里面
os.rename()
顾名思义,将文件重命名,但是其中的路径为绝对路径
例4:os.rename()
os.renames(oldpath,newpath)
oldpath和newpath分别存贮文件旧,新的绝对路径,用该函数将其重命名
os.mkdir()
创建文件夹
例5:os.mkdir()
os.mkdir("dataset")
创建dataset文件夹,路径与当前工程文件.py相同
for in 循环
遍历列表
len()
获取当前列表内的元素的个数,用于文件重命名
三:文件重命名及移动全流程思路
1.获取路径
2.使用os.listdir()得到全体文件的名字并输出为列表
3.使用for in循环,遍历该列表,对单个文件进行操作,直到遍历结束
3.1.获取filename(文件名),对其进行修改,得到newname(新文件名)
3.2.从文件名中得到分类信息,放置到路径中,实现对文件的分类
3.3.获取当前文件的oldpath(旧路径),对其进行修改,得到newpath(新路径)
3.4.对路径和名字进行拼接,得到oldpath和newpath
4使用os.rename()进行重命名及移动
四.代码展示
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 10 13:26:28 2020
@author: 萝莉控萝莉
"""
"""
请放到与dataset文件夹相同路径下运行
"""
import os
i = 0#提示移动的计数
path = ".\\dataset"#设置数据所在路径
filelist = os.listdir(path)
for filename in filelist:
oldname = filename
oldname = "mnist_train"+oldname[-6:]
#print(oldname)
place = oldname[-5:-4]#获取目的文件夹编号
num = os.listdir(".\\"+place)#获取目的文件夹内文件
#print(num)
num = len(num)#获取目的文件夹内文件数量
num = num+1#获取新文件的数字编号
#print(num)
newname = oldname[:11]+"_"+str(num)+oldname[-4:]
#print(newname)
path1 = os.getcwd()#获取路径
oldpath = os.path.join(path1+"\\dataset\\"+filename)
#print(oldpath)
newpath = os.path.join(path1+"\\"+place+"\\"+newname)
#print(newpath)
os.renames(oldpath,newpath)
i=i+1
if i%100==0:
print("移动中")
print("移动成功")
os.mkdir("dataset")#创建被删除的dataset文件夹