2013-01-25 48 views
0

我正在嘗試學習python,但我已經到了一堵磚牆。用python提取文件中的某些偏移量

我只是試圖提取某些.bin文件中的偏移量。 我有一個長度爲「00FFFFF0」的bin文件

可以說我想從塊大小爲「0x800」的「0x3F000」中提取出來,然後把它放在一個文件中,我將如何去處理它?我還沒有任何代碼,希望我會得到一些很好的輸入。我是python的初學者(已經做了幾個月),並且想要學習如何做到這一點,真的只是爲了教育目的。

但問題是我希望能夠提取特定的(偏移;塊大小) 我希望你明白我的意思。我非常感謝我給予的任何幫助。感謝

+0

你是說......尋找和閱讀? –

+0

我這麼認爲。但我需要一個例子,你可能會給我寫一個文件名爲backup.bin的例子,並且我試圖提取的偏移量爲00003F00,塊大小爲800.然後將其保存到名爲「提取」的文件 – james28909

+2

在Python的情況下,您不僅可以閱讀文檔,還可以使用「內省」,即使用Python來確定Python可以執行的操作。如果你執行f = open(「filename」)''你現在把名字'f'設置爲一個文件對象,如果你執行'help(f)'Python會打印一些簡短的文檔,告訴你你可以做什麼與該文件對象。其中一個方法函數是'file.seek()'函數,'file.read()'是另一個函數。 – steveha

回答

2

這是pretty self-explanatory,實際上是:

# Use the with statement to open a file so it will later be closed automatically 
with open("in.bin", "rb") as infile: # rb = read binary 
    infile.seek(0x3F000, 0)   # 0 = start of file, optional in this case 
    data = infile.read(0x800) 

with open("out.bin", "wb") as outfile: 
    outfile.write(data) 
+1

請注意,不需要使用字符串常量,並使用int()將它們強制轉換爲整數。 Python允許使用像'0x3F000'這樣的文字,並且會對它們做正確的事情。 – steveha

+0

你不知道你剛教過我多少人。非常感謝你 – james28909

+0

這個小小的教育代碼,我將統治世界muhahahaha – james28909