资讯专栏INFORMATION COLUMN

Python遍历文件夹并批量改名

Lemon_95 / 2969人阅读

摘要:计划是把第二级文件夹的名字缩短,这样以后搜索书名的时候还可以检索到相应的书目。一些作者下面可能会有多本书,所以再一次遍历得到二级文件夹目录这里缩短二级文件夹的名字,取前个字符。这段代码是通用的,可以直接放到任何地方检查文件数。

在学校时,从六维空间下载了一些电子书,文学类全英文mobi格式的,有24G多。放在硬盘有段时间了,比较占地方,想移到移动硬盘里去。文件的目录格式如下:
第一级目录是按作者名排序的文件夹,第二级目录是以书的名字命名的文件夹,第三级就是书了。

讲道理的话我直接剪切,粘贴就结束了,可是,偏偏就出问题了,粘贴的时候提示我文件名太长,不能粘贴。然后就搜索了一下,Windows文件的路径最长为255字符,这里由于书名和第二级文件夹目录名字较长,超过了限制,导致无法复制过去。

所以才有了这篇文章。

计划是把第二级文件夹的名字缩短,这样以后搜索书名的时候还可以检索到相应的书目。

下面直接上代码了,代码写的很糙,看下思路就行了。

import os
dir = os.getcwd()         #获取当前目录
subdir = os.listdir(dir)  #遍历当前目录下所有文件,也就是获取第一级作者名字所有文件夹
for i in subdir:
    path = os.path.join(dir,i)      #把第一级目录添加到路径中
    if os.path.isdir(path):         #如果path仍然是文件夹,下面就继续遍历出其中的文件,
        end_dir = os.listdir(path)  #实际上这步判断可以不要的,因为我知道目录结构。
        for i in range(len(end_dir)):  #一些作者下面可能会有多本书,所以再一次遍历得到二级文件夹目录
            newname = end_dir[i][0:50] #这里缩短二级文件夹的名字,取前50个字符。
            os.rename(os.path.join(path,end_dir[i]),os.path.join(path,newname))  #用新名字取代旧名字

到这里,名字就改完了,我顺利的把文件移到了硬盘。

然后呢,我在想,24G,有多少本书呢,那么问题来了,
代码很糙,凑合看吧,上代码。这段代码是通用的,可以直接放到任何地方检查文件数。

import os
result = []
def get_all(cwd):
    get_dir = os.listdir(cwd)  #遍历当前目录,获取文件列表
    for i in get_dir:          
        sub_dir = os.path.join(cwd,i)  # 把第一步获取的文件加入路径
        if os.path.isdir(sub_dir):     #如果当前仍然是文件夹,递归调用
            get_all(sub_dir)
        else:
            ax = os.path.basename(sub_dir)  #如果当前路径不是文件夹,则把文件名放入列表
            result.append(ax)
            print(len(result))   #对列表计数
            
if __name__ == "__main__": 
    cur_path = os.getcwd()   #当前目录
    get_all(cur_path)

最后,运行后得到结果15108,然后可以结合上篇文章,把书名导入到Excel表中,方便查询。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61030.html

相关文章

  • Python遍历件夹批量改名

    摘要:计划是把第二级文件夹的名字缩短,这样以后搜索书名的时候还可以检索到相应的书目。一些作者下面可能会有多本书,所以再一次遍历得到二级文件夹目录这里缩短二级文件夹的名字,取前个字符。这段代码是通用的,可以直接放到任何地方检查文件数。 在学校时,从六维空间下载了一些电子书,文学类全英文mobi格式的,有24G多。放在硬盘有段时间了,比较占地方,想移到移动硬盘里去。文件的目录格式如下:showI...

    yzd 评论0 收藏0
  • Python完成简单鉴别数百个物流单号

      在我们要寄出去许多快递包裹时,为了能及时沟通物流详情,要迅速将物流单号分离出来。这时候用手动式去鉴别确实太麻烦了,因此本文用Python完成简单鉴别数百个物流单号,所需的可以了解一下  小伙伴们好,我是大五  这也是Python改变未来系列第三篇,是一个和你们相关的难题实例。  前情提要  掌握我的好朋友很有可能都清楚,阿浩常给大伙儿送书。近一年,算不上协同抽奖活动送书,独立我自买+出版社出版...

    89542767 评论0 收藏0
  • 使用Python批量处理工作簿和工作表

    摘要:使用批量处理工作簿和工作表批量新建并保存工作簿批量打开一个文件夹中的打开工作簿批量重命名一个工作簿的所有工作表批量重命名多个工作簿批量重命名多个工作簿中的同名工作表将一个工作簿的所有工作表批量复制到其他工作簿按条件将一 ...

    maxmin 评论0 收藏0
  • 批量修改OC类名脚本 -- python

    摘要:前言近日由于种种原因,需要把代码里面的类全部都修改一遍类名。并且在给类文件重命名的时,需要注意前缀和后缀添加的位置,不要添加到和后面去了即可。 前言 近日由于种种原因,需要把代码里面的类全部都修改一遍类名。 在网上找了一圈相关的开源库,没有发现有合适满意的,始终都存在一些问题,要么出现误修改,要么把方法名或者属性名也给修改了等等情况。 于是决定掏出生疏的Python来写一个。 批量修改...

    Jokcy 评论0 收藏0
  • 批量修改OC类名脚本 -- python

    摘要:前言近日由于种种原因,需要把代码里面的类全部都修改一遍类名。并且在给类文件重命名的时,需要注意前缀和后缀添加的位置,不要添加到和后面去了即可。 前言 近日由于种种原因,需要把代码里面的类全部都修改一遍类名。 在网上找了一圈相关的开源库,没有发现有合适满意的,始终都存在一些问题,要么出现误修改,要么把方法名或者属性名也给修改了等等情况。 于是决定掏出生疏的Python来写一个。 批量修改...

    cc17 评论0 收藏0

发表评论

0条评论

Lemon_95

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<