文件名批量处理-python

文件名批量操作

  1. 批量去除文件名中特殊字符
    以去除’signal_1.jpg’中的’_'为例,所用函数re.sub
    sub 函数使用规则
    re.sub(‘要操作的原字符’, ‘目标字符’,‘操作字符串’)
    例如:
 name = signal_1.jpg
 newname=re.sub('\D','',name)#\D表示非数字
 print(newname)
 >>>l1
  1. 文件批量重命名
    以signal1.jpg替换signal_1.jpg为例,所用函数os.renames
    renames函数使用规则
    os.renames(‘path+old name’, ‘path+new name’)
    例如:
path = r'E:\dataset\find_peak'
os.renames(os.path.join(path,name),os.path.join(path,newname+str('.jpg')))
  1. 删除不同后缀的文件
    以Thumbs.db文件为例,所用函数os.remove
    remove函数使用规则
    os.remove(‘目标文件的绝对路径’)
if os.path.splitext(name)[1] == '.db':
	os.remove(os.path.join(Filepath,name))
  1. 文件排序
    os.listdir()读取到的文件不是顺序的,要将其按从小到大依次排列好,所用函数sort()
    sort()函数使用规则
    [1] file_names.sort()
    直接对file_names中的元素进行排序
    [ 2] file_names.sort(key=lambda x:int(x.split('.')[0][8:]))
    标示以’.‘为标志分割文件名,取’.'之前部分的第8位向后的 内容,转化为int型,对其进行排序

  2. 整体实现
    目标:实现对一个文件夹的子文件夹中的所有图片进行重命名及排序,图片已经是按顺序排好,但删除了部分图片,故需要将其序号重新向前看齐
    代码实现:
    tips:每次对文件名进行操作后,要想用print查看file_names的内容,必须重新调用一次file_names = os.listdir(Filepath)),更新file_names的内容

import os, re

path = r'E:\fish\per\set\signal'
file_path = os.listdir(path)
for file in file_path:
    print(file)
    Filepath=os.path.join(path,file)
    file_names = os.listdir(Filepath)
    print(file_names)
    for name in file_names:
        if os.path.splitext(name)[1] == '.db':
            os.remove(os.path.join(Filepath,name))
        newname=re.sub('\D','',name)
        os.renames(os.path.join(Filepath,name),os.path.join(Filepath,newname+str('.jpg')))
    file_names = os.listdir(Filepath)
    print(file_names)
    file_names.sort(key=lambda x:int(x.split('.')[0]))
    print(file_names)
    startNumber = '1'
    count=0
    for name in file_names:
        (fileName, extension) = os.path.splitext(name)
        os.renames(os.path.join(Filepath, name), os.path.join(Filepath, file+str(count+int(startNumber))+extension))
        count +=1
    file_names = os.listdir(Filepath)
    print(file_names)

2020/12/3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值