Имя: Пароль:
IT
 
Python. Не работате печть в файл
0 megabax
 
05.02.20
13:23
Добрый день.
Делают вывод в файл на Python:
print(dic, file=f)
где dic - некий словарь.
Пока я делал так
print(dic)
все было нормально, выводилась на экран. Но когда я начал выводить в файл, получил сообщение об ошибке:

<ipython-input-10-e6c9997a4d88> in out_file(file)
83 # f.write(key+"="+dic[key].encode('cp1251')+";")
84 #f.write("\n")
---> 85 print(dic, file=f)
86
87 #Получаем список файлов в переменную files

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\encodings\cp1251.py in encode(self, input, final)
17 class IncrementalEncoder(codecs.IncrementalEncoder):
18 def encode(self, input, final=False):
---> 19 return codecs.charmap_encode(input,self.errors,encoding_table)[0]
20
21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\xa8' in position 28310: character maps to <undefined>

Если пытаюсь сделать так:

    for key in dic:
        f.write(key+"="+dic[key].encode('cp1251')+";")
    f.write("\n")
то выдает сообщение:


<ipython-input-11-0502476b06f8> in out_file(file)
81
82 for key in dic:
---> 83 f.write(key+"="+dic[key].encode('cp1251')+";")
84 f.write("\n")
85 #print(dic, file=f)

TypeError: must be str, not bytes

Подскажите, пожалуйста, как с этим бороться?
1 luter-89
 
05.02.20
13:28
Добрый день.
Тут форум 1С.
2 megabax
 
05.02.20
13:32
Спасибо, вопрос решен, разобрался сам, надо было явно указать кодировку:
f = open('d://out//text.txt', 'w',encoding="utf-8")
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший