Как декодировать закодированный файл Excel с помощью Python - PullRequest
0 голосов
/ 29 августа 2018

Мой Java-программист преобразовал файл Excel в двоичный файл и отправил мне двоичный контент.

Он использовал sun.misc.BASE64Encoder и sun.misc.BASE64Decoder() для кодирования.

Мне нужно преобразовать эти двоичные данные во фрейм данных, используя python.

данные выглядят так,

UEsDBBQABgAIAAAAIQBi7p1oXgEAAJAEAAATAAgCW0NvbnRlbnRfVHl........

Я пробовал bas64 декодер, но не помогло.

мой код:

import base64
with open('encoded_data.txt','rb') as d:
    data=d.read()
print(data)
`UEsDBBQABgAIAAAAIQBi7p1oXgEAAJAEAAATAAgCW0NvbnRlbnRfVHl........`
decrypted=base64.b64decode(data)
print(decrypt)
  'PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00b\xee\x9dh^\x01\x00\x00\x90\x04\x00\x00\x13\x00\x08\x02[Content_Types].xml \xa2\x04\x02(\xa0\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00

Пожалуйста, помогите мне преобразовать эти двоичные данные в кадр данных pandas.

1 Ответ

0 голосов
/ 29 августа 2018

Ты почти у цели. Поскольку расшифрованный объект является строкой байтов, почему бы не использовать BytesIO?

import io
import pandas as pd

toread = io.BytesIO()
toread.write(decrypted)  # pass your `decrypted` string as the argument here
toread.seek(0)  # reset the pointer

df = pd.read_excel(toread)  # now read to dataframe

Отвечая на ваш вопрос из вашего комментария: Как преобразовать df в двоичный кодированный объект?

Что ж, если вы хотите преобразовать его обратно в объект в кодировке b64 с пандами, преобразующими его как excel, тогда:

towrite = io.BytesIO()
df.to_excel(towrite)  # write to BytesIO buffer
towrite.seek(0)  # reset pointer
encoded = base64.b64encode(towrite.read())  # encoded object

Чтобы записать закодированный объект в файл (просто чтобы закрыть цикл: P):

with open("file.txt", "wb") as f:
    f.write(encoded)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...