text: #! /usr/bin/env python3
  
  # 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 OSError 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()
  