Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2012 19:15:23

Relrin
Зарегистрирован: 2012-09-12
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при запуске кода

Имеется следующий код(Python 3.2):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def ParseByLines(file_path):
   """
       Чтение и анализ содержимого файла
       Входные данные:
           file_path - путь к файлу
   """
   # словари с библиотеками, идентификатора, операторами и т.д.
   libraries={}
   operators={}
   variables={}
   class_var={}
   functions={}
   comments =0
   
   ## открываем файл и читаем его построчно
   file=open(file_path,"r","utf-8")
   for line in file.readlines():
       string=line.replace('\n','')
       
       # разбор строки:
       for index in string:
           # Комментарии
           if(string[index]=="#"):
               commets+=1  
               break;
   print("Комментариев в файле: %d"%(comments))
   file.close()
   
if __name__ == '__main__':
   import os
   # чтение файлов из каталога
   #directory = "C:\\Code\\Python\\test\\"
   #files = os.listdir(directory);
   #for file in files:
   #    file=open(...)
   #    print(line,end='')
   #    ...
   #    file.close()
   ParseByLines("C:\\Code\\Python\\test\\test.rb")

Почему выдается ошибку вида:
Traceback (most recent call last):
File “C:\Python\lib\encodings\cp1251.py”, line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)
UnicodeDecodeError: ‘charmap’ codec can't decode byte 0x98 in position 1130: character maps to <undefined>

Отредактировано Relrin (Сен. 20, 2012 19:16:36)

Офлайн

#2 Сен. 20, 2012 19:32:03

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Ошибка при запуске кода

Тут есть пару других замечаний.

Если файл для тройки, то стоит писать #!/usr/bin/env python3
“C:\\Code\\Python\\test\\test.rb” -> r“C:\Code\Python\test\test.rb”
Вместо ручного поиска в строке можно char in line

comments += bool('#' in line)

А строка 23 это какая? Влом редактор открывать.

Офлайн

#3 Сен. 20, 2012 19:38:18

Relrin
Зарегистрирован: 2012-09-12
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при запуске кода

odnochlen
А строка 23 это какая? Влом редактор открывать.
Ошибка возникае в библиотеке на месте:
class IncrementalDecoder(codecs.IncrementalDecoder):
    def decode(self, input, final=False):
        return codecs.charmap_decode(input,self.errors,decoding_table)[0]

Отредактировано Relrin (Сен. 20, 2012 19:38:41)

Офлайн

#4 Сен. 20, 2012 22:27:55

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Ошибка при запуске кода

file=open(file_path,"r","utf-8")
Вы уверены, что читаемый файл в юникоде?

Офлайн

#5 Сен. 20, 2012 23:48:46

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Ошибка при запуске кода

Т.к. ‘#’ в аскии и в утф8 одинаков, я бы открывал в аскии.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version