Python 3 сохранить строку с шестнадцатеричными escape-кодами как jpg - PullRequest
0 голосов
/ 19 июня 2020

Как сохранить полученную таким образом строку s:

f = open("a.jpg", "rb")
b = f.read()
s = str(b)[2:-1]

как файл .jpg? В другой программе у меня есть только s подобная форма этого изображения, так что это: "\\xff\\xd8\\xff\\xe0...".

1 Ответ

0 голосов
/ 19 июня 2020

Я бы порекомендовал изменить код, который создает строку таким странным образом.

Если это невозможно:

Откуда эта строка? Это надежный источник или он исходит от веб-сервера или человека, который может захотеть взломать / сломать ваш компьютер?

Действительно ли строка создана с помощью str(b)[2:-1] или это всего лишь приближение к реальной проблема?

Я спрашиваю, так как это немного усложняет задачу. (Требуется добавить try / except)

Следующий код должен работать:

from ast import literal_eval

def stripped_str_b_to_bytes(s):
    try:
        return literal_eval("b'" + s + "'")
    except SyntaxError:
        return literal_eval('b"' + s + '"')


testvalues = [
    b"A'B",
    b'A"B',
    bytes([v for v in range(256)]),
    ]

for b in testvalues:
    print("testing with ", b)
    s = b[2:-1]
    print("S =", s)
    c = stripped_str_b_to_bytes(s)
    assert b == c

Он пытается добавить b' и ' к s и оцените эту строку как выражение python.

Если это не сработает, тогда он пытается добавить b" и " к s и вычислить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...