Generating generations of files

DL Neil PythonList at
Mon Apr 29 15:59:08 EDT 2019

Are you aware of a library/utility which will generate and maintain the 
file names of multiple generations of a file?

The system generates multiple output files. For example, one might be 
called "output.rpt". However, we do not want to 'lose' the output 
file(s) from any previous run(s). In this case we want access to both 
files, eg "output.rpt" (the latest) and "output.rpt.1" (the previous 
generation, or maybe we could refer to it as a 'backup'). Similarly, if 
we run again, we want to maintain the three generations of the output 
file, including "output.rpt.2". (etc)

Backup systems/VCS often simply add a number to the original file-name, 
as above.

In logging, we only "rotate" the generations of a log file daily. Thus 
can add stat-data eg output.rpt.CCYY-MM-DD.

Yes, there are totally-unique naming ideas involving UUIDs. Um, "no"!

This application is multi-tenant (so 'your' output won't ever mix with 
'mine'). It is not multi-entrant/does not need to be 'thread-safe'. 
However, a single user might frequently make several runs in a day. 
Thus, leaning toward the 'add a number', rather than looking to extend 
the 'stat' idea down to hours and minutes.

OTOH, using generation-numbers when there are many versions, (?surely) 
requires a 'ripple' of renaming; whereas the date-time idea is 
one-time-only rename.

The users want the (latest) output files to continue to use their 
'traditional names'. The "generations' idea is (part of) this sprint's 
extension to the existing system. They have no particular preference for 
which/whatever generational naming system is used - as long as "it makes 
sense". They have undertaken responsibility for managing their disk-space(!)

Have looked in the PSL, eg os, os.path, shutil, pathlib... Hope I didn't 
miss something.

Any ideas (before we 'reinvent the wheel') please?

More information about the Python-list mailing list