1. ホーム
  2. python

[解決済み] バイトをstrに連結できない

2022-01-28 04:56:09

質問

Pythonへの移行がうまくいきません。どうなっているのでしょうか?

f = open( 'myfile', 'a+' )
f.write('test string' + '\n')

key = "pass:hello"
plaintext = subprocess.check_output(['openssl', 'aes-128-cbc', '-d', '-in', test, '-base64', '-pass', key])
print (plaintext)

f.write (plaintext + '\n')
f.close()

出力ファイルは次のようになります。

test string

と表示され、このエラーが発生します。

b'decryption successful\n'
Traceback (most recent call last):
  File ".../Project.py", line 36, in <module>
    f.write (plaintext + '\n')
TypeError: can't concat bytes to str

解決方法は?

subprocess.check_output() はバイト列を返します。

Python 3では、ユニコード() を暗黙のうちに変換することはありません。 str ) オブジェクトと bytes オブジェクトを作成します。出力のエンコーディングがわかっている場合は .decode() を使用して文字列を取得したり、あるいは \n に追加したい。 bytes"\n".encode('ascii')