用Python分割文件夹 |
您所在的位置:网站首页 › 怎么拆分文件夹里的文件夹 › 用Python分割文件夹 |
当一个文件夹下面有很多小文件时,会导致打开文件夹的速度变慢,这时需要新建一些子文件夹,将小文件重新归类。 1. os.listdir 和 filter在python中,通过os.listdir读取文件夹下的文件名,如果我们只希望对某种特别的文件类型进行重新归类,则可以通过filter来筛选读取到的文件。 filter的语法规则为 filter(function, iterable)其功能类似于 def filter(function,iterable): newList = [] for i in iterable: if function(i): newList.append(i) return newList所以,对于一个文件名而言,我们可以通过判定其末位的扩展名,来实现对特定文件的筛选。但需要注意的是,filter返回的并不是list,我们可以将其转换成list,从而方便后续的处理。 # 建立一个筛选规则 formFilter = lambda form :\ lambda f : True if f[-len(form):] == form else False # 输入文件夹,返回文件夹下所有dType类型数据 getAllFiles = lambda path,dType : \ list(filter(formFilter(dType),os.listdir(path))) #筛选文件 2. 新建文件夹与剪切文件在python中,可通过os.mkdir来新建一个文件夹,通过os.path.exists来判定某个文件夹是否存在。所以,当我们希望将某个文件存储到某个文件夹中的时候,可以先进行判定。 # 新建文件夹 def mkDir(path): if not os.path.exists(path): os.mkdir(path)mkDir在Python中,os.rename是对文件重新命名的函数,然而在windows中,会自动将\识别为文件夹的层级关系。所以,如果我们希望将名为"test.txt"的文件移动到名为"folder"的文件夹中,则只需要将其文件名改为"folder\test.txt"即可,但前提是文件及"folder"必须存在。 其调用格式为 os.rename(src,dst)其中,src为源文件,dst为目标文件。 3. 实现我们希望将文件夹中名为a-b.txt的文件重新命名为b.txt,并存储在文件夹a中。 import os # 文件夹筛选器 formFilter = lambda form :\ lambda f : True if f[-len(form):] == form else False # 只对文件名称中有mark的进行操作 markFilter = lambda mark:\ lambda f : True if mark in f else False # 输入文件夹,返回文件夹下所有dType类型数据 getAllFiles = lambda path,dType : \ list(filter(formFilter(dType),os.listdir(path))) #筛选文件 # 新建文件夹 def mkDir(path): if not os.path.exists(path): os.mkdir(path) def splitFolder(path=r'E:\Downloads\Cloud\Jtxt',mark="-"): if path[-1]!='\\': path += "\\" files = getAllFiles(path,"txt") files = list(filter(markFilter(mark),files)) for f in files: try: folder = f.split(mark)[0] newName = f[len(folder)+1:] mkDir(path+folder) os.rename(path+f,path+folder+'\\'+newName) except: print(f) if __name__ == "__main__": splitFolder() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |