|  | #!/usr/bin/env python | 
|  | # | 
|  | # Copyright (C) 2009 The Android Open Source Project | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the 'License'); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an 'AS IS' BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  | # | 
|  |  | 
|  | import operator, os, sys | 
|  |  | 
|  | def get_file_size(path): | 
|  | st = os.lstat(path) | 
|  | return st.st_size; | 
|  |  | 
|  | def main(argv): | 
|  | output = [] | 
|  | roots = argv[1:] | 
|  | for root in roots: | 
|  | base = len(root[:root.rfind(os.path.sep)]) | 
|  | for dir, dirs, files in os.walk(root): | 
|  | relative = dir[base:] | 
|  | for f in files: | 
|  | try: | 
|  | row = ( | 
|  | get_file_size(os.path.sep.join((dir, f))), | 
|  | os.path.sep.join((relative, f)), | 
|  | ) | 
|  | output.append(row) | 
|  | except os.error: | 
|  | pass | 
|  | output.sort(key=operator.itemgetter(0), reverse=True) | 
|  | for row in output: | 
|  | print "%12d  %s" % row | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | main(sys.argv) |