2013-06-12 23 views
14

我正在嘗試開發一個讀取二進制文件,進行一些更改並保存的工具。我想要做的是製作文件中每一行的列表,使用多行,然後再次加入列表。使用python加入字節列表

這是我的嘗試:

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) 

,並給我這個錯誤:

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

這是有道理的,因爲我有個字節的工作。

有沒有辦法我可以使用連接函數o類似於連接字節的東西? 謝謝。

+0

爲它的價值,你可以做'ALIST = f.readlines()'或'ALIST =名單(F)' – mgilson

+0

嘗試:'new_file ='\ x01'.join(aList)' – karthikr

+1

討論二進制文件中的「行」是否有意義?通常我們爲易讀性添加換行符,並且不適用於二進制文件。我想知道你是否更適合使用固定長度的字符串,比如每80個字節。 (只是一個想法。) – Rob

回答

38

使用b''.join()執行上一個字節的字符串聯接:

>>> b''.join([b'line 1\n', b'line 2\n']) 
b'line 1\nline 2\n' 
+0

因此,python可以識別出我在使用字節時只是在任何字符串旁邊添加'b'。這很棒。謝謝。 – user2130898

2

只要在你的「線路」上工作,一旦你完成它們就寫出來。

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

我沒有想到這個解決方案,這比我的容易得多。謝謝! – user2130898