Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
3 / 3 / 0
Регистрация: 18.01.2017
Сообщений: 63
1

Почему при чтении exe файла средствами python выводит ошибку?

18.11.2017, 15:51. Показов 3308. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот сам код:
Python
1
2
file = open("f.exe", "r", encoding="cp1251")
print(file.read())
(ничего сложного)

Но вот когда открываю f.exe(моя программа, которую написал на ассемблере(при нажатии пробела делает эмуляцию щелчка еще одного пробела.)Не суть!). Вот она отображается корректно, ну, без ошибок, а программа к примеру minecraft.exe пишет:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 6865: character maps to <undefined>
Побывал ставить кодировки utf-8 и другие.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Вкратце: Одна программа читается нормально, другая нет.

Для тех кто спросит зачем: "У меня много идей. Одна из них это сделать свой архиватор, да-глупо, но мне интересно"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2017, 15:51
Ответы с готовыми решениями:

При создании exe файла из кода на python, файл вылетает, и ничего не выводит
print(&quot;Тест&quot;) input() Вот такая программа. Я решил протестировать работу pyinstaller и сделал...

При создании exe файла из кода на python, файл вылетает, после расчётов и не выводит ответ
from math import sqrt x1 = int(input(&quot;Введите значение х^2 &quot;)) x2 = int(input(&quot;Введите значение х...

При чтении файла программа выводит бессмыслицу
Доброго времени суток! Уважаемые участники форума, возникла следующая проблема. Код, который...

fread выводит грязь при при чтении из файла
задача заключалась в том, чтобы записать содержимое файла в массив. проблема в том, что при выводе...

Не выводит русские слова при чтении и лемматизации из csv-файла
Добрый день! К сожалению, я совсем не программист и очень далека от этого, но решение задач...

8
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.11.2017, 16:04 2
Лучший ответ Сообщение было отмечено DwapDaBase как решение

Решение

По тому что вы открываете файл как текстовый, а не бинарный.
А конкретно - ошибка возникает по тому что python пытается перекодировать содержимое(бинарное) в cp1251 полагая что там текст.

Добавлено через 1 минуту
Читайте так

Python
1
2
with open("f.exe", "rb") as file:
    print(file.read())
1
3 / 3 / 0
Регистрация: 18.01.2017
Сообщений: 63
18.11.2017, 16:15  [ТС] 3
Так мне текст и нужен. Иначе заморочки будут. К примеру текст(который видно на скриншоте, это моя програмка(f.exe)) его мне нужно зашифровать rsa, потом расшифровать и записать в новый exe под название f_new(к примеру). А делать шифрование с байт кодом не удобно(или у меня руки кривые). по моему это странно, что какие то exe открываются, а какие то нет
Миниатюры
Почему при чтении exe файла средствами python выводит ошибку?  
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
18.11.2017, 17:05 4
Лучший ответ Сообщение было отмечено DwapDaBase как решение

Решение

Нельзя открывать бинарные файлы как текстовые - как минимум это глупо.
В твоей проге на асме символов раз-два и обчелся - поэтому и нет ошибок декодирования: все символы попадают в какой-то диапазон типа ASCII.
Как только ты попробуешь открыть файл как минимум более 1 kb (не суть сколько - просто в нем будет многа многа разных букафф) - получишь ошибку декодирования: потому что у бинарных файлов не существует текстовых кодировок.
Учи матчасть.
1
3 / 3 / 0
Регистрация: 18.01.2017
Сообщений: 63
18.11.2017, 17:10  [ТС] 5
Ок, спасибо) Уже пытаюсь в бинарном виде редактировать
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.11.2017, 18:37 6
Цитата Сообщение от DwapDaBase Посмотреть сообщение
Так мне текст и нужен.
Нет там текста, есть только байты )))
Парсте нужное, потом руками перекодируйте "байты в текст нужной кодировке" ...
Сам же питон в текстовом режиме пытается перевести весь файл и "ломается".

Добавлено через 2 минуты
Кстати для python есть вроде специальная библиотека для работы с PE файлами.
0
3 / 3 / 0
Регистрация: 18.01.2017
Сообщений: 63
18.11.2017, 18:47  [ТС] 7
Ага, pefile называется, но я не нашел документации на русском. А так сказать английский на "техническом" уровне в 8 классе не преподают)
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.11.2017, 15:13 8
Цитата Сообщение от DwapDaBase Посмотреть сообщение
А так сказать английский на "техническом" уровне в 8 классе не преподают)
Все что касается программирования - "все сам" как правило, не нужно рассчитывать на школу или институт.

Но я вроде видел где-то блог по этой либе, кроме того стоит почитать про саму структуру PE -файла прежде чем изучать библиотеку.
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
23.11.2017, 15:26 9
Цитата Сообщение от DwapDaBase Посмотреть сообщение
А так сказать английский на "техническом" уровне в 8 классе не преподают
Приготовься к тому, что тебя не будут толком учить ни чему ни где (школа, институт и т д). Исключением будут ведущие вузы: МГУ, Бауманка, Иннополис и т д, да и учась там многое придется учить самому.
0
23.11.2017, 15:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2017, 15:26
Помогаю со студенческими работами здесь

Выдает ошибку при чтении и записи файла
Выдает ошибку при чтении и при записи файла. Дебагер указывает соответственно на строку ReadFile...

Почему пропускается строка при чтении XML файла?
Доброго времени суток дамы и господа. Столкнулся с такой проблемой. Есть XML файл, я его разбираю и...

Почему программа зацикливается при чтении конца файла?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;locale.h&gt; FILE *fin;...

Как обработать ошибку, возникающую при чтении из файла с запрещённым доступом
Всем здравствуйте. Есть блок двоичных данных с фиксированным размером (состоящий из одной...

Почему возращается пустая строка при чтении ini-файла?
Всем привет. Непойму почему мне возращается пустая строка.К примеру есть переменная: const char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru