I have need to search a directory and return the name of the most recent file matching a given pattern. Given a directory with these files and timestamps,
> > q.pattern1.abc Feb 13 > r.pattern1.cdf Feb 12 > s.pattern1.efg Feb 10 > t.pattern2.abc Feb 13 > u.pattern2.xyz Feb 14 > v.pattern2.efg Feb 10 > > calling my_function("/path/to/dir", "pattern1") will return q.pattern1.abc > and calling my_function("/path/to/dir", "pattern2") will return > u.pattern2.xyz. > > My question is, what would be a reasonable behavior/result/return value if: > 1. "/path/to/dir" does not exist or is not readable > 2. no files match the given pattern > > Also, what would be a reasonable name for such a function? > Thank you everyone. Taking bits of advice from each of you I tentatively have: import glob import os def order_matching_files(a_path, a_glob="*"): """Search a path for files whose names match a_glob and return a list of the full path to such files, in descending order of modification time. Ignore directories.""" previous_dir = os.getcwd() os.chdir(a_path) return_list = [os.path.join(a_path, x) for x in glob.glob(a_glob) if os.path.isfile(x)] os.chdir(previous_dir) return reversed(sorted(return_list, key=os.path.getmtime)) It's a shame that glob.glob does not take an arbitrary directory as an optional argument if one does not want to scan the current directory.
-- https://mail.python.org/mailman/listinfo/python-list