Tim Chase wrote: > On 2016-05-15 11:46, Peter Otten wrote: >> def sorted_dir(folder): >> def getmtime(name): >> path = os.path.join(folder, name) >> return os.path.getmtime(path) >> >> return sorted(os.listdir(folder), key=getmtime, reverse=True) >> >> The same idea will work with pathlib and os.scandir(): >> >> def _getmtime(entry): >> return entry.stat().st_mtime >> >> def sd_sorted_dir(folder): >> return sorted(os.scandir(folder), key=_getmtime, reverse=True) > > unless sorted() returns a lazy sorter, you lose most of the advantages > of scandir() being lazy since you have to read the entire directory > list into memory to sort it.
I mentioned it because it avoids the duplicate stat call of the older approach which is rather inelegant. Taking another look at the OP's problem I think sorting could be entirely avoided. Instead have the memory card remember when its data was last archived. Pseudo-code: try: cut_off = load_cut_off(memory_card) pics = (pic for pic in memory_card if gettime(pic) > cut_off) except: pics = memory_card for pic in pics: copy_to_archive(pic) save_cut_off(now(), memory_card) As long as computer and camera time are in sync... -- https://mail.python.org/mailman/listinfo/python-list