前提
WebAPIを利用して添付ファイル(Excel)のデータを取得することができました。
レスポンスのBodyにこのExcelファイルがバイナリ形式で格納されています。
これをそのままファイルに出力して.xlsxファイルとしたいのですが方法がわかりません。
実現したいこと
String型の変数に入っているバイナリデータ(この表現で良いのかわかりませんが)を
そのままバイト列としてファイルに出力したい。
(出力したファイルは当然Excelファイルとして読み書き可能である。)
発生している問題・エラーメッセージ
デバッガで読める文字(半角文字)はそのまま書き込まれているようであるが
文字化けしている様な文字列に見えるが
そのまま文字列として書き込んでしまうとエンコードの関係か
該当のソースコード
Pyhton
1def OutputString2Bin(fname, fdata): 2 # 文字列のバイナリファイルへの書き込み 3 with open(fname, 'wb') as f: 4 bfdata = fdata.encode() #多分エンコードの必要がないはず・・・ 5 f.write(bfdata) 6 return
試したこと
これから試そうと思っているのが、文字列を1文字(1バイト?)ずつ読み込んで
バイトデータに変換したものを配列に入れて書き込みするしかないと思いつつも
文字列から1文字ずつシフトして変換する方法がわかっていない状況です。
文字列を一括でバイト配列に変換する方法はないのでしょうか・・・。
【2022/12/9 追記】
現状のデータがどうなっているかをスクショしてみました。
よろしくお願いします。
取得できたデータ「fdata」の値の型など詳細を提示ください。
bytes型で本当に.xlsxのバイナリデータどおりならそのままf.write(fdata)でいいはずです。
(BASE-64なりでエンコードなどされていないか?)
コメントありがとうございます。型は「文字列」になります。参考までにデバッグ情報とオリジナルのデータをダンプしたものを
画像として添付しました。(質問初めてで慣れてなくてすみません。)
なぜエンコードしていないのにも関わらず、出力時にエンコードされた状態(?)に
なるのでしょうか。
> レスポンスのBodyにこのExcelファイルがバイナリ形式で格納
にもかかわらずfdataがstr型という点がおかしいので
WebAPIとの通信部分、レスポンスBodyをfdataに格納している部分のソースも提示したほうがよいです。