python批量修改图片名

项目场景:

在用python做一个蜘蛛纸牌时,需要添加多张纸牌的照片,而用tkinter.PhotoImage()仅支持gif等几种不常用的图片格式这就需要批量修该图片名,一个一个修改太麻烦,于是就网上搜了一下用python批量修改文件名的代码,自己稍作加工就可以了,我是把一个目录下的所有图片,直接命名为从1到图片的个数。

问题描述:

#修改图片名
import os
print("注:此程序会将该目录下所有图片从1开始重命名")
h=input("你想要修改成的后缀名:")
dir=input("请输入要修改的文件目录的地址:")
imglist = os.listdir(dir)#返回该目录下所有文件名的列表
num_files = len(imglist)
for x in range(0,num_files):
    print("--------------------------")
    old_file = os.path.join(dir, imglist[x])#旧文件名的全路径名
    print(old_file)
    imglist[x]=str(x+1)#遍历文件名修改为:序号+1 注意这里要类型转换
    print(imglist[x])
    new_file = imglist[x] + h #为新文件名添加后缀名
    print(new_file)
    #new_file = os.path.join(dir,new_file)#
    new_file = dir+'\\'+new_file
    os.rename(old_file, new_file)
new_file = os.path.join(dir,new_file)
new_file = dir+'\\'+new_file

这两条语句是等价的,一开始,我是直接这样写的:new_file = dir+new_file,没有加‘\\’(这里要加双斜杠‘\\’,一个不行),结果导致的问题就是:例如我的图片目录是:D:\ege\百度图片-发现多彩世界 ,我直接加上文件名后,执行程序所有的图片移动到了ege目录下,且图片名字前面加上了‘百度图片-发现多彩世界 ’。

解决tkinter.PhotoImage()仅支持gif等几种不常用的图片格式问题

这个是在用cmd运行java程序时发现编码格式要为gbk所以就写了这个程序来批量修改指定目录下的所有文件编码格式,注意当文件内容很少时,识别的编码格式可能会不准确。utf-8,gbk都支持。

#修改文件格式
import os
import chardet
import codecs
print("注意:如果文件内容太少可能识别不准确")
h=input("你想要转化成什么编码格式?")
print("注意此目录下的所有文件编码都将被修改")
dir=input("请输入要修改的文件目录的地址:")
imglist = os.listdir(dir)#返回该目录下所有文件名的列表
num_files = len(imglist)
for x in range(0,num_files):
    print("--------------------------")
    old_file = os.path.join(dir, imglist[x])#文件名的全路径名
    with open(old_file, 'rb') as f:
        data = f.read()
        y=chardet.detect(data)#返回文件当前的编码格式,返回类型为字典类型
        print(y)#打印当前文件编码格式
    with codecs.open(filename=old_file, mode='r', encoding=y['encoding']) as fi:
        data1 = fi.read()
        with open(old_file, mode='w', encoding=h) as fo:
            fo.write(data1)
            fo.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值