学习-python-办公自动化-批量修改文件名(原文件名换成指定文件名)

本文介绍了一位初学者如何使用Python批量修改文件名的过程,从实际问题出发激发学习兴趣。作者通过建立练习材料,使用os和re库,创建函数遍历文件夹并重命名文件,实现了按特定规则批量更改文件名的需求。文章强调了解决实际问题在学习编程中的重要性,并欢迎更多经验分享。
摘要由CSDN通过智能技术生成

最近学习Python,发现还是从解决问题的方向入手,更容易激起学习兴趣,通过学习解决平时遇到的问题,也可以获得成就感。为了方便自己随时使用,也是记录,准备在csdn上写一些本人学习的博客,并对博客内容做了分类,想到还是很长远哈。

本次是工作上遇到一个问题,批量修改文件内容(不要表头),一一产出对应新文件,并对应改成其他名字。我研究半天,也没能实现这个需求,看csdn上有很多其他类似的操作,我就打算一步步来,先从批量改名开始。这篇文章给我很大的帮助基于Python一次性批量修改多个文件的文件名_疯狂学习GIS的博客-CSDN博客_python给多个文件重命名

首先先建立了几个练习材料,这里我好像还特意用notepad++改成了UTF-8格式,不然没读取成功

引用库和地址,此块只用到了os库,re库是正则表达式用到,我这里还没这么复杂

import os
import re
import sys
path=r'E:\1.python\3.练习材料\修改文件/'

处理好新老名称对应关系,我是简单自己手写名称并放到一个dict里,大量的可以用Excel导入,都是放到dict里,旧值做key,新值做value。

a_name=('客户资料','学习资料')
b_name=('cust','study')
name_dict={}
for i in range(len(a_name)):
    a=a_name[i]
    b=b_name[i]
    name_dict[a]=b

 下面完全用的别人的代码,因为据说scandir在处理大量数据时会更快,就没有用listdir什么的了,定义一个函数,获取路径下(包括子文件夹)指定文件类型(此处为txt文件)的文件名

def scan_floder(srcpath,file_list):
    """ 使用os自带的scan方法遍历文件夹 """
    for item in os.scandir(srcpath):
        if item.is_dir():
            scan_floder(item.path,file_list)
        elif item.is_file():
            file = item.name   #获取路径文件名
            if file.endswith('.txt'):  #挑选需要的文件
                file_list.append(item.name)

 因为这里我是直接替换文件名中文部分,因此我是截取了“_”号之前的中文和后缀编号,最后用了renames拼接了一下新文件的全名(12.11修改,加了if判断,非需要的文件不替换)

file_list =[]
scan_floder(path,file_list)
for file in file_list:
    old_name=file
    
    old_name_name_end=old_name.rfind('_')
    old_name_start=old_name[:old_name_name_end]#名称
    old_name_end=old_name[old_name_name_end+1:-4]#后缀
    if old_name_start in a_name:
        new_name_number=name_dict[old_name_start] #替换
        os.renames(path+old_name,path+new_name_number+'_'+old_name_end+'.txt')
 

好了,一个简单的批量修改文件名就搞定了,各位大佬有什么好的建议和指点,欢迎教学

​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值