Найти - Пользователи
Полная версия: Кодировка
Начало » Python для новичков » Кодировка
1
rootme
Здравствуйте,

Существует задача написания скрипта в домене Windows, который будет уметь считать размер сетевой папки. Сам алгоритм расчета сетевой папки реализован с помощью функций os.walk, os.path.join, os.path.getsize модуля os. Код (часть, отвечающая за Map Network Drive опущена):

# -*- coding: koi8-r -*-
import os

def f_size_0a(arg1):
a = os.walk(arg1)
f_total = 0

for x in a:
p_1 = str(x[0])
fn = x[2]
total = 0
for i in fn:
f_1 = str(i)
npath = os.path.join(p_1, f_1)
fs = os.path.getsize(npath)
total = fs + total
f_total = total + f_total
return f_total

fl1 = raw_input("Enter folder name: ")

if os.path.isdir(fl1) == 1:
rez = f_size_0a(fl1)
print rez
else:
print "Folder does not exist!"

raw_input()
Проблема в том, что если в папке храниться файл и его название представлено в непонятной кодировке, выдается ошибка:

Traceback (most recent call last):
File "C:\py\walk.py", line 26, in <module>
rez = f_size_0a(fl1)
File "C:\py\walk.py", line 15, in f_size_0a
fs = os.path.getsize(npath)
File "C:\Python27\lib\genericpath.py", line 49, in getsize
return os.stat(filename).st_size
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'U:\\lgks\\????? 13.03.09.pdf'
Понятно, что проблема в кодировке, но как я не старался ее изменить путем перевода в Unicode строку - ничего не получается. Подскажите как можно решить эту проблему?
igor.kaist
rootme
но как я не старался ее изменить путем перевода в Unicode строку - ничего не получается.
Когда переводите в юникод, укажите параметр ignore или replace
http://docs.python.org/howto/unicode.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB