Mercurial > cpython-lru_cache-weakref
view Tools/scripts/byteyears.py @ 56748:8eff759d080f
Merged revisions 75711 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75711 | mark.dickinson | 2009-10-26 11:59:30 +0000 (Mon, 26 Oct 2009) | 1 line
Skip readline tests if readline module is not available.
........
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Mon, 26 Oct 2009 12:01:06 +0000 |
| parents | 46625e6122e9 |
| children | fcfe324663a6 |
line wrap: on
line source
#! /usr/bin/env python # Print the product of age and size of each file, in suitable units. # # Usage: byteyears [ -a | -m | -c ] file ... # # Options -[amc] select atime, mtime (default) or ctime as age. import sys, os, time from stat import * def main(): # Use lstat() to stat files if it exists, else stat() try: statfunc = os.lstat except AttributeError: statfunc = os.stat # Parse options if sys.argv[1] == '-m': itime = ST_MTIME del sys.argv[1] elif sys.argv[1] == '-c': itime = ST_CTIME del sys.argv[1] elif sys.argv[1] == '-a': itime = ST_CTIME del sys.argv[1] else: itime = ST_MTIME secs_per_year = 365.0 * 24.0 * 3600.0 # Scale factor now = time.time() # Current time, for age computations status = 0 # Exit status, set to 1 on errors # Compute max file name length maxlen = 1 for filename in sys.argv[1:]: maxlen = max(maxlen, len(filename)) # Process each argument in turn for filename in sys.argv[1:]: try: st = statfunc(filename) except os.error as msg: sys.stderr.write("can't stat %r: %r\n" % (filename, msg)) status = 1 st = () if st: anytime = st[itime] size = st[ST_SIZE] age = now - anytime byteyears = float(size) * float(age) / secs_per_year print(filename.ljust(maxlen), end=' ') print(repr(int(byteyears)).rjust(8)) sys.exit(status) if __name__ == '__main__': main()
