Python 如何调整代码以新号码开始?

Python 如何调整代码以新号码开始?,python,python-3.x,Python,Python 3.x,此代码将重命名文件夹中以0.jpg、1.jpg等开头的所有图像。。。不删除任何jpg,但如果我在那个文件夹中已经有一些图像,比如说我有图像0.jpg,1.jpg,2.jpg,然后我添加了一些其他称为im5.jpg和someImage.jpg的图像 我要做的是调整代码以读取最后一个图像编号的值,在本例中为2,并从3开始计数。 换句话说,我将忽略已标记的图像,继续从3开始计数的新图像。简洁和半测试版本: import os src = "/home/user/Desktop/images/" ext

此代码将重命名文件夹中以0.jpg、1.jpg等开头的所有图像。。。不删除任何jpg,但如果我在那个文件夹中已经有一些图像,比如说我有图像0.jpg,1.jpg,2.jpg,然后我添加了一些其他称为im5.jpg和someImage.jpg的图像

我要做的是调整代码以读取最后一个图像编号的值,在本例中为2,并从3开始计数。
换句话说,我将忽略已标记的图像,继续从3开始计数的新图像。

简洁和半测试版本:

import os
src = "/home/user/Desktop/images/"
ext = ".jpg"
for i,filename in enumerate(os.listdir(src)):
    # print(i,filename)

    if filename.endswith(ext):
        os.rename(src + filename, src + str(i) + ext)
        print(filename, src + str(i) + ext)
    else :
        os.remove(src + filename)
提供的所有*.jpg文件在扩展名之前只包含一个数字。否则您将得到一个
ValueError

如果在编号上有一个间隙,那么这个间隙将不会被新文件填充。例如,1.jpg、2.jpg、3.jpg、123.jpg将继续使用124.jpg(这更安全)


如果需要过滤掉文件名,如im5.jpg或someImage.jpg,可以使用正则表达式向列表中添加If子句:

import os
import glob
offset = sorted(int(os.path.splitext(os.path.basename(filename))[0]) 
                for filename in glob.glob(os.path.join(src, '*' + ext)))[-1] + 1

for i, filename in enumerate(os.listdir(src), start=offset):
    ...

当然,到目前为止,这三行代码已经无法阅读,可能无法赢得代码选美比赛。

对于初学者,您需要在问题中的一行之前进行一个循环,以了解哪些文件已经与编号的输出格式匹配您是否考虑过将“位置”写入文件,然后,当你重新运行脚本时,读取它?你应该考虑发布你想要的输入/输出。
import os
import glob
import re
offset = sorted(int(os.path.splitext(os.path.basename(filename))[0]) 
                for filename in glob.glob(os.path.join(src, '*' + ext))
                if re.search('\d+' + ext, filename))[-1] + 1