#!/usr/bin/python
# -*- coding: UTF-8 -*-
# -*- coding:utf8 -*- import os
from string import digits class BatchRename(): def __init__(self):
#文件存放目录
self.spath = 'Sensetime/'
self.dpash='Sensetime-rename/'     
self.endpash='Sensetime-end/' def rename(self):
filelist = os.listdir(self.spath)
rename_fileList=os.listdir(self.dpash)
total_num = len(filelist)
i = 0
num = 0
for item in filelist:
if item.endswith('.jpg'):
if len(item.split("-")) == 2:
src = os.path.join(os.path.abspath(self.spath), item)
dst = os.path.join(os.path.abspath(self.dpash), item.split("-")[0] + '.jpg')
try:
print(src)
os.rename(src, dst)
print('converting %s to %s ...'% (item, item.split("-")[0] + '.jpg'))
i = i + 1
except Exception as e:
if e.args[0] == 17:
print("####",item)
dst = os.path.join(os.path.abspath(self.dpash), item.split("-")[0] + str(num) + '.jpg')
os.rename(src, dst)
num+=1
#continue
else:
print(item)
print(len(item.split("-")))
print('total %d to rename & converted %d pngs'%(total_num, i)) #处理名字重名 重名数量统计入字典
def CheckDuplicateDname(self):
i=0
name_dict={}
rename_fileList = os.listdir(self.dpash)
for item in rename_fileList:
name=item.translate(str.maketrans('', '', digits)).split(".")[0]
src = os.path.join(os.path.abspath(self.dpash), item)
dst = os.path.join(os.path.abspath(self.endpash), name + '.jpg')
if name not in name_dict.keys():
print(item,item not in name_dict)
os.rename(src, dst)
name_dict[name] = 1
i+=1 else:
try:
dst = os.path.join(os.path.abspath(self.endpash), name + str(name_dict[name]) +'.jpg')
os.rename(src, dst)
print('converting %s to %s ...' % (item, item.split("-")[0] + '.jpg'))
i = i + 1
name_dict[name]+=1
except Exception as e:
print(item) # contin
print(name_dict)
print("total:",i)
print(sum(name_dict.values())) if __name__ == '__main__':
demo = BatchRename()
demo.rename()
demo.CheckDuplicateDname()

 去除字符串中的数字:

name=item.translate(str.maketrans('', '', digits)).split(".")[0]

利用Python批量重命名文件夹下文件的更多相关文章

  1. Python批量重命名指定目录下文件的两种方法

    #法一 import os path = "C://Python34//" for file in os.listdir(path): if os.path.isfile(os.p ...

  2. 利用Python批量重命名一系列文件名杂乱的文件

    假设目录下面有这样一系列命令杂乱的文件: OPENFOAM -TRAINING- PART- #1.pdf OPENFOAM - TRAINING- PART- #2.pdf OPENFOAM- TR ...

  3. php文件夹下文件批量重命名

    php文件夹下文件批量重命名 <?php header("Content-type:text/html;charset=utf-8"); $dir = __DIR__.'./ ...

  4. python调用另一个文件中的代码,pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题

    如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...

  5. Linux上统计文件夹下文件个数以及目录个数

    对于linux终端用户而言,统计文件夹下文件的多少是经常要做的操作,于我而言,我会经常在谷歌搜索一个命令,“如何在linux统计文件夹的个数”,然后点击自己想要的答案,但是有时候不知道统计文件夹命令运 ...

  6. Projects\Portal_Content\Indexer\CiFiles文件夹下文件占用磁盘空间过大问题。

    C:\Program Files\Microsoft Office Servers\12.0\Data\Office Server\Applications\9765757d-15ee-432c-94 ...

  7. Linux统计某文件夹下文件、文件夹的个数

    统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...

  8. Android Studio的使用(十)--读取assets、Raw文件夹下文件,以及menu、drawable文件夹

    1.直接在/src/main目录下面新建assets目录 2.接下来即可读取文件 3.读取Raw文件夹下文件也类似.首先在res文件夹下新建raw目录,然后放入需要的文件即可读取. 4.menu和dr ...

  9. Linux统计某文件夹下文件的个数

    ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件的个数,包括子文件夹里的 ...

随机推荐

  1. 使用node打造自己的命令行

    一.实现一个简单的功能 二.环境 1.系统: window 10 2.编辑器: vscode 3.node版本: 8.7.0 三.开始玩 1.打开命令行,新建一个pa'ckage.json npm i ...

  2. Flask架构管理及特点(重要)

    正文 程序包结构 ——————————————————————————————————flask文件夹结构 其中:app为程序包,Flask程序保存在这个包中migrations文件夹包含数据库迁移脚 ...

  3. Gnome 究极无死角美化!!!不要再说gnome丑啦!!!

    一.本文针对的美化部分包括:主题.图标.锁屏.开关机画面.gurb.插件.鼠标.终端及其配色方案. 二.资源下载: 1.请先下载好资源再继续进行.下列两个网址的内容一样,请根据下载体验自行选择. 超星 ...

  4. GPS北斗NTP校时服务器原理及功能介绍

    在科技的发展下GPS北斗NTP校时服务器也得到了广泛应用,比如工业.科研.航空航天.公共场所等领域都用到了GPS北斗NTP校时服务器,该时间服务器以卫星时间为基准授时准确,替代了传统钟表授时的单一和时 ...

  5. unzip详解,Linux系统如何解压缩zip文件?

    通常在使用linux时会自带了unzip,但是在最小化安装之后,可能系统里就无法使用此命令了. yum list unzip 查看是否安装 如果没安装过就继续 yum install unzip 安装 ...

  6. 单片机基础——使用GPIO扫描检测按键

    1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...

  7. django 从零开始 12 快速集合queryset对象

    使用序列化将查询到的quweyset对象进行一个格式转换          还没看文档理解 待写 from django.core.serializers import serializers 导入该 ...

  8. 大型Java进阶专题(四) 设计模式之工厂模式

    前言 ​ 今天开始我们专题的第三课了,开始对设计模式进行讲解,本章节介绍:了解设计模式的由来,介绍设计模式能帮我们解决那些问题以及剖析工厂模式的历史由来及应用场景.本章节参考资料书籍<Sprin ...

  9. VWware Workstation 安装CentOS系统

    VWware Workstation 安装CentOS系统 下载CentOS系统镜像: 官方地址:https://www.centos.org/download/mirrors/ 在此可选择华为云服务 ...

  10. 面试官:HashMap死循环形成的原因是什么?

    介绍 HashMap实现原理 之前的文章已经分析了HashMap在JDK1.7的实现,这篇文章就只分析HashMap死循环形成的原因 死循环形成是在扩容转移元素的时候发生的 void resize(i ...