我想創建和concat二進制文件,我需要在它們之間添加填充,由於某種原因會發生什麼是python添加垃圾並顯着增加文件(和它也改變了現有的內容)。Python - 追加/填充二進制文件增加垃圾
我所做的就是這樣的事情
file1 = OPEN(read_file, "rb")
file2 = OPEN(read_file, "rb")
file3 = OPEN(write_file, "ab")
data = file1.read(f1_size)
file3.write(data)
file3.flush()
file1.close()
while padding_size > 0:
file3.write(b'\x00')
padding_size -= 1
file3.flush() # Not sure this is mandatory here
data2 = file2.read(f2_size)
file3.write(data2)
file3.flush()
file2.close()
file3.close()
之前,我添加第二個二進制文件,這甚至會發生。如果我使用的尺寸很小(比如說100),那麼它會寫得很好,但如果我使用稍大一點的尺寸,它會變得非常瘋狂並且會在輸出文件中增加大量垃圾。 這段代碼並不是最優的,但對我來說並不重要,只要我能夠正確地添加填充即可。
感謝您的幫助。
更新
其實我瞭解到另一個腳本不應該改變我的文件是做什麼的,造成一個問題,由於故障。 感謝您的見解和幫助,我已經明顯改變了我的劇本。
我沒有答案,但我有幾個筆記。首先,你永遠不會讀第二個文件 - 在while循環期間size被減爲零,所以'file2.read(size)'不會讀取任何內容。其次,你應該使用'with open(file)'語法 - https://docs.python.org/2/tutorial/inputoutput.html - 它將有助於更好地跟蹤你的代碼,這將有助於調試這個問題。第三,除非你需要在整個腳本中看到輸出文件的變化(而不是在最後),否則根本不需要'flush'。 – DreadPirateShawn
@DreadPirateShawn我明白你的意思,我在這裏寫了泛型變量,所以大小不正確,我會解決上述問題。 –