使用python仅复制和重命名最新文件

使用python仅复制和重命名最新文件,python,batch-rename,Python,Batch Rename,我想通过重命名来复制一些文件 其中在第一个元素中:src/是一个目录,357是ID,1329844313是时间戳,.jpg是文件扩展名 现在我想有如下列表: (目标目录)+(SALT)+'.'+(ID)+(扩展名) 正如我所说:“423l4kj2342” 我的预期结果将是: dest/423l4kj2342_357.jpg 但是,正在覆盖具有相同ID的文件。我只想要具有相同ID的最新文件 现在我的问题是,我怎样才能得到下面的结果?是否复制仅包含最新时间戳的相同ID文件 src/picture-3

我想通过重命名来复制一些文件

其中在第一个元素中:
src/
是一个目录,
357
是ID,
1329844313
是时间戳,
.jpg
是文件扩展名

现在我想有如下列表: (目标目录)+(SALT)+'.'+(ID)+(扩展名) 正如我所说:“423l4kj2342” 我的预期结果将是:

dest/423l4kj2342_357.jpg 但是,正在覆盖具有相同ID的文件。我只想要具有相同ID的最新文件

现在我的问题是,我怎样才能得到下面的结果?是否复制仅包含最新时间戳的相同ID文件

src/picture-357-1329844313.jpg  dest/423l4kj2342_357.jpg
src/picture-57-1329844816.png   dest/423l4kj2342_57.png
src/picture-358-1329844325.jpg  dest/423l4kj2342_358.jpg

按ID和时间戳按字典顺序降序排列文件列表,然后针对每个ID只处理第一个

如下所示:

def cmp_file(a, b):
  id_a, timestamp_a = re.findall(r'\d+', a)
  id_b, timestamp_b = re.findall(r'\d+', b)
  return 2*cmp(id_a, id_b) + cmp(timestamp_a, timestamp_b)

filelist.sort(cmp=cmp_file, reverse=True)

last_id = None
for file in filelist:
  id, timestamp = re.findall(r'\d+',file)
  if not last_id == id:
    process_file(file)
    last_id = id
或者,也可以将文件名放在时间戳和文件名元组列表的ID索引目录中。然后为每个dict条目找到具有最大时间戳的条目,并处理该文件:

index = dict()
for file in filelist:
  id, timestamp = re.findall(r'\d+',file)
  if not id in index:
    index[id] = list()
  index[id].append((timestamp, file))
for id, files in index.iteritems():
  process_file(files.max(key=lambda a: a[0])[1])

请把你的问题直截了当地说出来。在没有明确说明您的问题的情况下,这无助于提供长达一页的废话和代码。我已经更新了我的问题。对不起,误会了
index = dict()
for file in filelist:
  id, timestamp = re.findall(r'\d+',file)
  if not id in index:
    index[id] = list()
  index[id].append((timestamp, file))
for id, files in index.iteritems():
  process_file(files.max(key=lambda a: a[0])[1])