> > > I wish to copy the highest version number of a file from directory \ > > > \ > > > \fileserver\D:\scripts to C:\scripts where the file names are of the > > > form > > > > filename_MM.NN.SS.zip, where MM, NN, and SS can be one to three > > > digits. > > > > Example directory: > > > other.zip > > > dx_ver_1.1.63.zip > > > dx_ver_1.2.01.zip > > > dx_ver_1.12.7.zip > > > temp.txt > > > > Does python have string matching routines that would find the bottom > > > listed zip file and/or file copying routines?
> > You could just use string slicing to cut off the first 7 characters > > and have the numbers available to compare. There's also the os.stat > > module to find the last modified date of the file. You might be able > > to use the glob module to grab a list of the files and then sort the > > list too. Comparing the version strings is not enough: you have to convert the parts into integers, because else: >>> "dx_ver_1.12.7.zip" < "dx_ver_1.2.1.zip" True > Thanks for posting folks. I didn't make my question clear. Before I > sort the files I need to ensure that I am only sorting the files that > match the profile of "filename_MM.NN.SS.zip", where MM, NN, and SS can > be one to three > digits. Match the file names against the pattern "dx_ver_(\d+).(\d+).(\d +).zip". You may also use the glob function, but then you will have to parse the version number from the file name anyway: with the regexp you can use match.groups() to get the version number. You can do: import re ver_re = re.compile(r"dx_ver_(\d+).(\d+).(\d+).zip") def getVer(fn): """Return a *comparable* file version, None for bad file names""" m = ver_re.match(fn) return m and map(int, m.groups()) print sorted(os.listdir('/path/to/wherever'), key=getVer)[-1] --Daniele P.S. I guess in Obfuscated Python one would write something like: >>> print sorted((pair for pair in ((re.match(r"dx_ver_(\d+).(\d+).(\d+).zip", >>> fn), fn) for fn in os.listdir('/path/to/wherever')) if pair[0]), key=lambda >>> _: map(int, _[0].groups()))[-1][1] dx_ver_1.12.7.zip -- http://mail.python.org/mailman/listinfo/python-list