Can't concat bytes to str

This is proving to be a rough transition over to python. What is going on here?:

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() 

The output file looks like:

test string

and then I get this error:

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

4 Answers

subprocess.check_output() returns a bytestring.

In Python 3, there's no implicit conversion between unicode (str) objects and bytes objects. If you know the encoding of the output, you can .decode() it to get a string, or you can turn the \n you want to add to bytes with "\n".encode('ascii')

0

subprocess.check_output() returns bytes.

so you need to convert '\n' to bytes as well:

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

hope this helps

You can convert type of plaintext to string:

f.write(str(plaintext) + '\n') 
1
f.write(plaintext) f.write("\n".encode("utf-8")) 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like