re.sub() .* 作为pattern执行了两次.

发布于 2022-09-12 12:58:08 字数 1807 浏览 22 评论 0

题目描述

我想把图片文件批量重新命名(现在通过其他方法实现了,但是这种方法的bug不能理解,想知道错在那里了)

题目来源及自己的思路

就是打算爬一些图片,想改一下名字
自己没有思路,就网上找了代码,然后改一改
原作者代码: https://blog.csdn.net/kobeyu6...

相关代码

粘贴代码文本(请勿用截图)
代码如下:

import os
import re

# 批量修改文件夹的图片名
def ReFileName(dirPath,pattern):
 '''
 :param dirPath: 文件夹路径
 :pattern:正则
 翻译:
 param 参数
 pattern 模式
 '''

 # 对目录下的文件进行遍历
 i = 1
 for f in os.listdir(dirPath):
 print('file:{}'.format(f))
 # newName = re.sub(pattern, str(i), file)
 newName = re.sub(pattern, str(i)+'.png', f)
 # .* 默认贪婪最长 任意字符 1.png 1.png1.png
 newFilename = f.replace(f,newName)
 print('file:{}'.format(newFilename))
 print('----------------------------')

 # 重命名
 os.rename(os.path.join(dirPath, f),     os.path.join(dirPath,newFilename))
 i+=1

 print('图片名称已经全部修改成功')


if __name__ == "__main__":
 dirPath = r"F:\......\static"
 pattern = re.compile(r".*")
 ReFileName(dirPath,pattern)

打印效果

file:1.png1.png
newFilename:1.png1.png
----------------------------
file:2.png2.png
newFilename:2.png2.png
----------------------------
file:3.png3.png
newFilename:3.png3.png
----------------------------
file:4.png4.png
newFilename:4.png4.png
----------------------------
file:5.png5.png
newFilename:5.png5.png
----------------------------
file:6.png6.png
newFilename:6.png6.png
----------------------------
file:7.png7.png
newFilename:7.png7.png
----------------------------
图片名称已经全部修改成功

你期待的结果是什么?实际看到的错误信息又是什么?

期待成功改名, 没有报错,但是效果不是想要的.名字是两个拼在一起了

问题描述

名字是两个拼在一起了

问题出现的环境背景及自己尝试过哪些方法

查找了python官网, 看了pypi相关的解释, 搜索了re.sub() 这个关键词,看了几篇讲解的博客
(也看了别的方法改名,成功了,但是还是想知道这个代码,为什么执行两次)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文