mirror of
https://github.com/python/cpython.git
synced 2025-07-12 22:05:16 +00:00

(with one small bugfix in bgen/bgen/scantools.py) This replaces string module functions with string methods for the stuff in the Tools directory. Several uses of string.letters etc. are still remaining.
56 lines
1.4 KiB
Python
Executable file
56 lines
1.4 KiB
Python
Executable file
#! /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 *
|
|
|
|
# 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 file in sys.argv[1:]:
|
|
if len(file) > maxlen: maxlen = len(file)
|
|
|
|
# Process each argument in turn
|
|
for file in sys.argv[1:]:
|
|
try:
|
|
st = statfunc(file)
|
|
except os.error, msg:
|
|
sys.stderr.write('can\'t stat ' + `file` + ': ' + `msg` + '\n')
|
|
status = 1
|
|
st = ()
|
|
if st:
|
|
anytime = st[itime]
|
|
size = st[ST_SIZE]
|
|
age = now - anytime
|
|
byteyears = float(size) * float(age) / secs_per_year
|
|
print file.ljust(maxlen),
|
|
print repr(int(byteyears)).rjust(8)
|
|
|
|
sys.exit(status)
|