2014-02-20 48 views
7

這被證明是一個粗略的轉換到python。這是怎麼回事?:上不能連接字節到str

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 
+1

解碼你的明文或編碼的換行符。 – Hyperboreus

回答

9

subprocess.check_output()返回一個字節字符串。

在Python 3中,unicode(str)對象和bytes對象之間沒有隱式轉換。如果你知道輸出的編碼,就可以.decode()它得到一個字符串,或者你可以把你\n要添加到bytes"\n".encode('ascii')

2

subprocess.check_output()返回字節。

,所以你需要轉換「\ n」用來字節,以及:

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

希望這有助於

相關問題