[英]How can i adjust my code to start with a new number?
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)
此代碼將重命名文件夾中以0.jpg,1.jpg等開頭的所有圖像,並且不刪除任何jpg,但是如果我已經在該文件夾中包含一些圖像,那么假設我有圖像0.jpg,1。 jpg,2.jpg,然后我添加了其他幾個,分別稱為im5.jpg和someImage.jpg。
我想要做的是調整代碼以讀取最后一個圖像編號的值,在這種情況下為2,然后從3開始計數。 換句話說,我將忽略已標記的圖像,並繼續從3開始計數。
簡潔的半測試版本:
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文件在擴展名前僅包含一個數字。 否則,您將得到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
當然,到現在為止,這三行代碼還不太可讀,可能無法贏得代碼選美大賽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.