欲讀取數據的文件,以十六進制格式編碼:如何在Python中以二進制格式讀取二進制文件?
01ff0aa121221aff110120...etc
文件含有> 100.000這樣字節,一些超過1,000,000(它們自帶型DNA測序)
我試圖下面的代碼(以及其他類似的):
filele=1234563
f=open('data.geno','r')
c=[]
for i in range(filele):
a=f.read(1)
b=a.encode("hex")
c.append(b)
f.close()
這使每個字節單獨的「AA」「01」「F1」等,這是非常適合我!
這工作正常到(在這種情況下)字節號905碰巧是「1a」。我也嘗試了也停在同一個字節的ord()函數。
可能有一個簡單的解決方案?
當你說停止了,你是否遇到異常,或者是什麼?另外要清楚的是,這是一個二進制文件,您想要讀取一系列十六進制編碼的字節值? –
如果你正在閱讀一個二進制文件,最好使用''rb''作爲你的標誌來打開''。 – Turn
我不能想出任何原因,假設你準確地呈現代碼,這會失敗。每個離散的字節值(和空字符串)編碼爲十六進制就好了(在Py2中,'十六進制'編解碼器已從Py3中的'str.encode'中移除)。對於每個可能的字符自己嘗試:'對於map(chr,range(256))中的c:print c.encode('hex')'。他們都工作。我的答案優化了C層的大部分工作(以換取稍高的峯值內存使用量),但是您的代碼不能以任何有意義的方式打破。請給出確切的例外或不當行爲。 – ShadowRanger