python如何对文件进行批量命名,python怎么批量重命名文件

  python如何对文件进行批量命名,python怎么批量重命名文件

  Python:批量重命名图片。参考链接:https://www.cnblogs.com/znh8/p/11809737.html

  将视频转换成图片,并以帧的形式命名,如0.jpg、1.jpg、2.jpg、…、800.jpg。不过我只想要中间的部分,比如100-300.jpg的图片,然后重新命名,从0-200开始新的命名方式,也就是0.jpg。

  1.重命名单个文件夹下的所有图片。重命名文件夹下的图片:

  导入os#这种镜像名只能处理一个样本数据,有待改进def rename(path):file list=OS . listdir(path)#获取指定文件夹中包含的文件或文件夹名的列表print(file list)total _ num=len(file list)#获取文件夹中所有文件的个数i=0 #图片名称从0开始c=0 for file list:#遍历该文件夹中的文件,即图片if item.endswith(。jpg ):src=OS . path . join(OS . path . abspath(path),item)dst=OS . path . join(OS . path . abspath(path),str(i)。尝试:os.rename(src,dst) print(将%s转换为%s . % (src,dst)) i=i 1 c=c 1除了:继续打印( total %d以重命名已转换的%d个jpg %(total _ num,I))打印( total%d以重命名已转换的% d个jpg %(total _ num,c))if _ _ name _= _ _ main _ :path= jiaodai-rename-test/2021 124-10-23/visual如以下文件夹所示:

  在焦代-重命名-测试\ 2021124-10-23下对visual中的图片进行更改。视觉上有一堆图片

  运行,检查结果:

  总计156用于重命名转换后的100个jpg总计156用于重命名转换后的100个jpg

  * *可以发现中间有断层。没成功。后来在这里发现了这个问题。【本部门以下几点已解决。在这里,我们将改进一批文件夹的命名。]

  2.修改多个文件夹中所有图片的名称,重新命名图片名称。

  视频图像转换后会有很多画面,但我想拍中间的部分,只是时间切入点,也就是起点不一样。但是,我必须从0开始重命名每个文件中的图片。前一个可以重命名一个文件夹里的所有图片,那么如果要处理多个文件夹呢?如果你要处理多个样本的数据,那么我可以在外面用嵌套一个 for循环。无非就是* *遍历一个大文件夹下的所有子文件夹,图片存放在子文件夹里* *例:

  我想一次性处理以下文件夹中多张图片的名称。

  测试:

  导入os#如果要处理多个样本的数据,那么我可以在外面再嵌套一个for循环,无非就是遍历一个大文件夹下的所有子文件夹, 子文件存储图片def rename(path):file list=OS . listdir(path)#获取指定文件夹中包含的文件或文件夹名称的列表print(file list)total _ num=len(file list)#获取文件夹中所有文件的数量c=0 #想要查看文件列表中的文件总共有多少张图片被重命名:figures path=path files /visual figures=OS . listdir(figures path)total _ figure=len(figures)I=0 # 图中fig的图片名从0开始:#遍历该文件夹中的文件,即figure.endswith()的图片。 jpg ):src=OS . path . join(OS . path . abspath(figs path)),fig)dst=OS . path . join(OS . path . abspath(figs path),str(i)。jpg) c=1 try: os.rename(src,dst) i=i 1 #print(将%s转换为%s . % (src,dst))除了:继续打印( total-sub %d重命名转换后的%d jpgs % (total_figure,I))打印( \n) #但是结果是错误的,因为 for fig in figures: #遍历这个文件夹下的文件,也就是图片if figure。Endswith(。jpg): #上面这个文件的排序和读取顺序是: 0.jpg , 1.jpg , 10.jpg 100.jpg , 101.jpg , 102.jpg , 103.jpg ,#所以这个不对。修改的思路:获取文件名的前缀,也就是300,然后用这个300 i字符串拼接图像路径,然后进行修改。if _ _ name _ _= _ _ main _ _ :path= jiaodai-rename-test/ rename(path)查看结果:

  [20211124-10-23 , 20211201-10-32 , 20211201-10-44 , 20211201-10-46 , 20211201-11-10] total-sub 156重命名已转换的10 jpg total-sub 551重命名已转换的10 jpg total-sub 613重命名已转换的10 jpg total-sub 538!!* *这个名字还是有问题:

  然后我进行了一个调试测试,看看哪里出错了。因此,当遍历图片时,

  也就是对于fig in figures: #遍历这个文件夹中的文件,也就是图片。

  结果如下:

  p图[0.jpg , 1.jpg , 10.jpg , 11.jpg , 12.jpg , 124.jpg , 125.jpg , 127.jpg , 128.jpg , 129.jpg , 13.jpg , 130.jpg , 131.jpg , 132.jpg , 133.jpg , 134.jpg , 135.jpg , 136 “30.jpg”、“31.jpg”、“32.jpg”、“33.jpg”、“34.jpg”、“35.jpg”、“36.jpg”、“37.jpg”、“38.jpg”、“39.jpg”、“4.jpg”、“40.jpg”、“41.jpg”、“42.jpg”、“43.jpg”、“44.jpg”、“45.jpg”、“46.jpg”、“47.jpg”、“48.jpg”、“49.jpg”、“5 这不是想要的顺序。

  解决方案:

  只需从图片中减去一个最小值。【因为图片的名字都是挨着的,比如200.jpg-300.jpg】得到文件名的前缀,也就是300,然后用这个300 i字符串拼接得到图片路径,然后修改。我得到图片的前缀,转换成整数,得到0 1 10 11 2这样的东西,然后排序。然后,我将遍历名称的排序列表,并依次重命名它们。在这里,我先采用第三种方式来解决。另外两个我自己没试过。

  3.多个文件夹中所有图片的名称修改【改进】多个文件中图片的批量修改:

  Os.listdir(path)获取指定文件夹中包含的文件或文件夹名列表,然后依次遍历filelist中的文件:每次遍历文件夹时,遍历里面的每一张图片,获取图片的所有前缀,转换成整数保存在列表中,然后对整数图片前缀进行排序遍历,重命名。 #重命名图片的名称。视频转换后会有很多画面,但我想拍中间的部分。长度可以相同。我需要300张左右的图片,但是时间切入点,也就是起点不一样。我得把每个文件里的图片从0 导入os#重新命名如果我要处理多个样本的数据,那么我可以在外面再嵌套一个for循环,无非就是遍历一个大文件夹下的所有子文件夹, 子文件存储图片def rename(path):file list=OS . listdir(path)#获取指定文件夹中包含的文件或文件夹名称的列表print(file list)total _ num=len(file list)#获取文件夹中所有文件的数量c=0 #想要查看文件列表中的文件总共重命名了多少张图片:figures path=path files /visual figures=OS . listdir(figures path)total _ figure=len(figures)I=0 #图片的名称从0开始。 figList=[] #保存所有图片的前缀,对于figures中的figure为整数:if figure.endswith(。jpg): pre,图类型=图。拆分(。)# prefix fig list . append(int(pre))#获取图片名称的前缀,转换成整数figList.sort() #图片的前缀的整数排序,所以应该是0 1 2 3排序,而不是0 1 101 102,total _ sub _ figure=len(fig list)for fig list:fig=str(fig int)fig=fig 。jpg src=OS . path . join(OS . path . abspath(fig spath),fig)dst=OS . path . join(OS . path . abspath(fig spath),str(i)。jpg) try: os.rename(src,dst)I=1 except:continue print(files,:total-sub % d to rename converted % d jpgs %(total _ sub _ figure,I))print( \ n )if _ _ name _ _= _ main _ _ :path= jiaodai-rename-test/ rename(path)运行结果:

  [20211124-10-23 , 20211201-10-32 , 20211201-10-44 , 20211201-10-46 , 20211201-11-10 ]20211124-10-23:total-sub 156要重命名转换的156 jpgs 202111201-10-32:total-sub 56

  找到就可以了。

  但是,如果原来的故障发生了,会不会是因为遍历模式的原因呢?[这个其实有点疑问]

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: