помогите исправить python скрипт

digenet

Пытаюсь вычислить какие файлы(с каким расширением) занимают больше всего места на диске.
И нашел тут скрипт.
Вроде бы работает, но когда встречается файл с русскими буквами, выдает ошибку:
  
Traceback (most recent call last):
File "FilesStat.py", line 37, in <module>
typesize[extension] += os.stat(root + os.sep + file).st_size
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'D:\\...\\? ? ?.doc'


Подскажите пожалуйста, как "обходить" такие файлы?


import os

#using code ripped from:
#http://www.5dollarwhitebox.org/drupal/node/84
#to convert to human readable format
def convert_bytes(bytes):
bytes = float(bytes)
if bytes >= 1099511627776:
terabytes = bytes / 1099511627776
size = '%.2fT' % terabytes
elif bytes >= 1073741824:
gigabytes = bytes / 1073741824
size = '%.2fG' % gigabytes
elif bytes >= 1048576:
megabytes = bytes / 1048576
size = '%.2fM' % megabytes
elif bytes >= 1024:
kilobytes = bytes / 1024
size = '%.2fK' % kilobytes
else:
size = '%.2fb' % bytes
return size

typesizeH = {}
typesize = {}

in_dir="D:\Temp"

try:
#for root, dirs, files in os.walk('.'):
for root, dirs, files in os.walk(in_dir):
for file in files:
prefix, extension = os.path.splitext(file)
if extension not in typesize:
typesize[extension] = 0
typesize[extension] += os.stat(root + os.sep + file).st_size
except KeyboardInterrupt:
pass


for key in typesize:
typesizeH[key] = convert_bytes(typesize[key])

print str(typesizeH)

types = typesize.keys()
types.sort(cmp=lambda a,b: cmp(typesize[a], typesize[b]), reverse=True)
print "Filetype\tSize"
for type in types:
print "%s\t%s" % (type, typesizeH[type])

okis

filename.encode(sys.getfilesystemencoding())

digenet

не прокатило, но спасибо!
по поиску по указанной строчке нашел то что надо
добавил ur в

for root, dirs, files in os.walk(ur"D:\..."):
Оставить комментарий
Имя или ник:
Комментарий: