#python #spyder
Вопрос:
Итак, я работаю над этим проектом с профессором. На данный момент он включает в себя несколько собственных пакетов и модулей. Я отправил ему файл .rar со всем проектом на доработку, который он с готовностью открыл на своем ПК с помощью Spyder (той же IDE, которую я использую). Мы совместно внесли в него некоторые исправления по видеосвязи, после чего он отправил мне исправленный файл обратно (agin, файл .rar). Как только я получил, я распаковал его и попытался запустить его снова на своем ПК (вся папка настроена как папка проекта Spyder, поэтому я открыл ее с помощью функции spyder «открыть проект»), и все файлы, казалось, выполнялись нормально, за исключением одного. Я не знаю почему, но есть файл, который не будет просто выполняться, как только я нажму кнопку «запустить файл». Он позволяет выполнять себя только по ячейкам, нажав кнопку «запустить текущую ячейку и перейти к следующей», после чего он работает просто отлично. Но по какой-то причине при попытке запустить весь файл возникает следующая ошибка:
File "C:UsersandreAppDataLocalTemp/ipykernel_10380/4038856374.py", line 1, in <module>
runfile('C:/Users/andre/Desktop/Eafit/8vo Semestre/Monitoría Panel Solar/OptiSurf/Fitness_Function/fit_main.py', wdir='C:/Users/andre/Desktop/Eafit/8vo Semestre/Monitoría Panel Solar/OptiSurf/Fitness_Function')
File "C:Usersandreanaconda3libsite-packagesdebugpy_vendoredpydevd_pydev_bundlepydev_umd.py", line 167, in runfile
execfile(filename, namespace)
File "C:Usersandreanaconda3libsite-packagesdebugpy_vendoredpydevd_pydev_imps_pydev_execfile.py", line 20, in execfile
contents = stream.read()
File "C:Usersandreanaconda3libcodecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 667: invalid continuation byte
Честно говоря, я не знаю, что это такое. В начале я думал, что это, возможно, был один из пакетов, который был поврежден, но, комментируя ВЕСЬ ФАЙЛ и запустив его, вызывает ту же ошибку (не говоря уже о том, что остальные модули, которые я пробовал, работали просто отлично). Затем я подумал, что это, возможно, связано с тем, что у меня было два проекта с одинаковым именем (так как исправленная и неизмененная копия моего проекта начала также вызывать ту же самую ошибку в том же файле), поэтому я попытался стереть каждый из них один раз, но это не сработало. Наконец, я попытался стереть все, создать новый проект spyder и просто вставить папки в новый проект, но и там не повезло.
Таким образом, любая информация была бы очень признательна.У меня такое чувство, что сам файл, возможно, был поврежден? Я имею в виду, что ошибка, которую он вызывает, похоже, указывает на то, что имя файла не может быть расшифровано или что-то в этом роде. Если у кого-нибудь есть какие-либо предложения, я бы с удовольствием их выслушал.
Комментарии:
1. возможно, у вас есть файл, в котором используется не
utf-8
другая кодировка, а другая, и его преобразование затруднено. Windows часто используетlatin1
илиcp1250
— и его, возможно, потребуется использоватьencoding=...
в некоторых функциях.2. ошибка показывает проблему с
0xe9
— если я запускаюb'xe9'.decode('utf-8)
, то я получаю ошибку, ноb'xe9'.decode('cp1250')
иb'xe9'.decode('latin1')
выдает'é'
— поэтому ваш файл используетlatin1
илиcp1250
3. Кстати: Я видел на Stackoverflow много вопросов с аналогичной проблемой, и если бы вы использовали Google
UnicodeDecodeError: 'utf-8' codec can't decode byte
, то вы должны были найти их несколько часов назад, и вы могли бы решить эту проблему несколько часов назад — без вопросов.
Ответ №1:
(Сопровождающий Spyder здесь) Я сожалею о неудобствах, которые это могло вам причинить. Это была ошибка в Spyder, и она была исправлена в нашей версии 5.1.5.
Ответ №2:
Во — первых: я видел на Stackoverflow много вопросов с аналогичной проблемой, и если бы вы использовали Google UnicodeDecodeError: 'utf-8' codec can't decode byte
, то вы должны были найти их несколько часов назад, и вы могли бы решить эту проблему несколько часов назад-не задавая вопросов.
Ошибка показывает проблему с 0xe9
— если я запускаю b'xe9'.decode('utf-8)
, то я получаю ошибку, но b'xe9'.decode('cp1250')
и b'xe9'.decode('latin1')
выдает 'é'
— поэтому ваш файл использует latin1
или cp1250
.
Вам следует найти какой-нибудь инструмент для преобразования файлов из latin1/cp1250
в utf-8
Или вы можете использовать Python для этого — вот так
filename = '...full path to your file...'
with open(filename, encoding='latin1', mode='r') as fh:
data = fh.read()
with open(filename, encoding='utf-8', mode='w') as fh:
fh.write(data)