У меня есть автомасштабируемый экземпляр AWS. На AMI для этого экземпляра, у меня есть файл myfile.py
, содержащий следующую строку:Ошибка кодирования Python? UnicodeDecodeError: кодек ascii не может декодировать байтовый порядковый номер не в диапазоне (128)
X5ZŒ
В моей AWS CloudFormation, LaunchConfiguration, я UserData, который выполняет следующую инструкцию питона, когда экземпляр раскручивается. Он просто читает myfile.py
и пытается заменить все вхождения регулярного выражения "X \ DZ" с "XYZ":
myString = "XYZ".join(re.compile('X\d\Z').split(open("myfile.py", "r").read()))
, который производит эту ошибку:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 4: ordinal not in range(128)
Okay. Я понимаю, что символ Œ
вызывает проблемы, поскольку он не является ASCII. Но когда я вручную запускаю один и тот же оператор из оболочки python, он отлично работает, не бросая никаких исключений.
Как заставить скрипт, запускаемый пользовательскими данными AWS LaunchConfig, иметь такое же поведение, как и при его запуске вручную? Какую кодировку я должен установить и как ее установить?
Вы используете 'from __future__ import unicode_literals' в этом модуле? –
Какая версия Python? – cdarke
@cdarke: почти наверняка Python 2, поскольку это подразумевает неявное декодирование с использованием ASCII. –