我需要通过在具有相同文件名的系列之间放置黑色占位符图片(仅文件名的后两位不同)来在视觉上分离文件夹中的照片(JPEG)。该文件夹通常包含单张(独立的)照片,其名称类似于03-12345-randomfilename.jpg,而照片系列则名为03-12345-file01.jpg,03-12345-file02.jpg,.. 03,.. 04等
单身人士应该独自呆着,但我需要在所有系列的前后放置一张黑色的图片。
我有以下Python脚本(最初由其他人编写),无故断断续续地失败。它通常可以使用,但有时会在系列的中间覆盖文件,或更常见的是,它将无法在系列的最后一张照片之后放置黑色图片。我花了几个小时试图弄清楚发生了什么,但是我陷入了困境。
任何建议,我们将不胜感激。
def blackJPG(directory):
# iterate over every file name in the directory
blackJPG = '/Users/username/black.jpg'
filelist = {}
for file_name in os.listdir(directory):
filename, file_extension = os.path.splitext(file_name)
stringmatch = re.compile(r'(\d{2})(.*?)(\d+)(.*?)(([A-Za-z]+))(.*?)(\d+)')
m = stringmatch.search(file_name)
#Create search table
if m:
sequence = int(m.group(8))
filename_without_sequence = "{0}{1}{2}{3}{4}{5}".format(m.group(1),m.group(2),m.group(3),m.group(4),m.group(6),m.group(7))
filelist.update({filename_without_sequence: (sequence)})
for key, value in filelist.iteritems():
if value > 1:
newJPG = "{0}/{1}00.jpg".format(directory, key)
if value >= 10:
lastJPG = "{0}/{1}{2}.jpg".format(directory, key, value+1)
else:
lastJPG = "{0}/{1}0{2}.jpg".format(directory, key, value+1)
#Create first blackJPG
shutil.copyfile(blackJPG, newJPG)
#Create last blackJPG
shutil.copyfile(blackJPG, lastJPG)
return "Done"
答案 0 :(得分:1)
如果变体始终是最后2个字符,那么您可以抓住不改变的部分(前缀),计算前缀的数量,并为具有多个文件的文件创建一个文件:
def add_black_jpg(directory):
series_count = {}
for file in os.listdir(directory):
name, ext = os.path.splitext(file)
prefix = name[:-2]
count = series_count.get(prefix, 0)
series_count[prefix] = count + 1
for prefix, count in series_count.items():
if count > 1:
shutil.copyfile(black_jpg_location, f"{prefix}00.jpg")