如何调整代码以新的数字开头?

时间:2018-07-31 13:37:27

标签: python python-3.x

Transport.send(msg);

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

我想做的是调整代码以读取最后一个图像编号的值,在这种情况下为2,然后从3开始计数。 换句话说,我将忽略已标记的图像,并继续从3开始计数。

1 个答案:

答案 0 :(得分:0)

Terse和半测试版:

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):
    ...

提供的所有* .jpg文件在其扩展名前均包含一个 only 数字。否则,您会得到ValueError

如果编号之间恰好有间隔,则该间隔将不会填充新文件。例如1.jpg,2.jpg,3.jpg,123.jpg会继续显示124.jpg(无论如何还是比较安全)。


如果您需要过滤掉诸如im5.jpg或someImage.jpg之类的文件名,则可以使用正则表达式将if子句添加到列表推导中:

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

当然,到目前为止,这三行代码还是不可读的,可能无法赢得代码选美大赛。