1 #!/usr/bin/env python 2 # 3 # Copyright (C) 2009 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the 'License'); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an 'AS IS' BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 # 17 18 import operator, os, sys 19 20 def get_file_size(path): 21 st = os.lstat(path) 22 return st.st_size; 23 24 def main(argv): 25 output = [] 26 roots = argv[1:] 27 for root in roots: 28 base = len(root[:root.rfind(os.path.sep)]) 29 for dir, dirs, files in os.walk(root): 30 relative = dir[base:] 31 for f in files: 32 try: 33 row = ( 34 get_file_size(os.path.sep.join((dir, f))), 35 os.path.sep.join((relative, f)), 36 ) 37 output.append(row) 38 except os.error: 39 pass 40 output.sort(key=operator.itemgetter(0), reverse=True) 41 for row in output: 42 print "%12d %s" % row 43 44 if __name__ == '__main__': 45 main(sys.argv) 46