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

题目描述

我想把图片文件批量重新命名(现在通过其他方法实现了,但是这种方法的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)+'.jpg', f)

# .* 默认贪婪最长 任意字符 1.jpg 1.jpg1.jpg

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.jpg1.jpg

newFilename:1.jpg1.jpg

----------------------------

file:2.jpg2.jpg

newFilename:2.jpg2.jpg

----------------------------

file:3.jpg3.jpg

newFilename:3.jpg3.jpg

----------------------------

file:4.jpg4.jpg

newFilename:4.jpg4.jpg

----------------------------

file:5.jpg5.jpg

newFilename:5.jpg5.jpg

----------------------------

file:6.jpg6.jpg

newFilename:6.jpg6.jpg

----------------------------

file:7.jpg7.jpg

newFilename:7.jpg7.jpg

----------------------------

图片名称已经全部修改成功

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

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

问题描述

名字是两个拼在一起了

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

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


回答:

点击查看.*

点击查看.+

原因如下:
re.sub()  .* 作为pattern执行了两次.

以上是 re.sub() .* 作为pattern执行了两次. 的全部内容, 来源链接: utcz.com/a/162649.html

回到顶部