我有這個名單在python中編寫二進制輸出的最有效方法是什麼?
bytes = ['11010001', '00100111']
我想寫的bytes
內容在我自己的二進制文件作爲一個字節。因此,我遍歷列表中的每個元素,將其從字符串轉換爲二進制,然後將其作爲該二進制組合表示的字符寫入文件中。
output = open(location+filename + '.enchuff', 'wb')
for byte in bytes:
chunk = int(byte, base=2)
output.write(chr(chunk))
它運行良好,但問題是當bytes
列表變大。我從另一個文件生成它,當我輸入時讓我們說一個100MB的文件讓它讀取,列表變得非常長,我的程序掛在for循環上。我猜測for循環一定是個問題,因爲它可能會迭代數以十萬計的元素並記錄下每一個元素。此外,我的內存消耗從那一點跳到了4GB的內存。有沒有其他方法可以更快實現並保留珍貴的RAM?
你可以在你的輸入文件的內容中創建一個迭代器,並將迭代器傳遞給你的字節轉換函數。不會變得更快,但會保存內存。 –
你能告訴我我該怎麼做到?我真的需要保存公羊。現在,當我輸入太大的文件時,我的整個筆記本電腦的內存已滿,然後我需要重新啓動它。 – Arcane
您可能想嘗試類似[bitarray](https://pypi.python.org/pypi/bitarray/0.8.10)來表示您的位,而不是字符串列表。而不是8位1個字節,而是使用8個字節(對於字符串)+無論列表開銷如何。 – Claudiu