mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.3 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
 | |
| import string
 | |
| 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 string.ljust(file, maxlen),
 | |
| 		print string.rjust(`int(byteyears)`, 8)
 | |
| 
 | |
| sys.exit(status)
 | 
