Joining byte list with python

Question:

I’m trying to develop a tool that read a binary file, makes some changes and save it. What I’m trying to do is make a list of each line in the file, work with several lines and then join the list again.

This is what I tried:

file = open('myFile.exe', 'r+b')

aList = []
for line in f:
    aList.append(line)

#Here im going to mutate some lines.

new_file = ''.join(aList)

and give me this error:

TypeError: sequence item 0: expected str instance, bytes found

which makes sense because I’m working with bytes.

Is there a way I can use join function o something similar to join bytes?
Thank you.

Asked By: user2130898

||

Answers:

Just work on your “lines” and write them out as soon as you are finished with them.

file = open('myFile.exe', 'r+b')
outfile = open('myOutfile.exe', 'wb')

for line in f:
    #Here you are going to mutate the CURRENT line.
    outfile.write(line)
file.close()
outfile.close()
Answered By: mawimawi

Perform the join on a byte string using b''.join():

>>> b''.join([b'line 1n', b'line 2n'])
b'line 1nline 2n'
Answered By: Andrew Clark
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.