mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +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)
 |