2011-08-02 74 views
3

我需要知道Python中'word'字節的數量。我需要這個的原因是我有我需要從文件中讀取的字數;如果我知道一個字中的字節數,我可以使用file.read(num_bytes)函數從文件中讀取適當的數量。如何在Python中確定'word'大小

如何確定單詞中的字節數?

+5

定義'單詞'。你是指記憶單位還是語言概念? –

+0

我沒有指定。我的意思是記憶的單位,我認爲這是在@TokenMacGuy所說的Python中未定義的。 – jlconlin

+3

單詞中的字節數應該由文件格式決定,而不是由Python決定。您應該看看創建該文件的應用程序。 –

回答

5

可以使用platform.architecture功能:

>>> import platform 
>>> platform.architecture() 
('64bit', '') 

講究的說明在同一頁上:

注意在Mac OS X(也許還有其他平臺),可執行文件可能是包含多種體系結構的通用文件。 要獲取當前解釋的「64位數」,這是更可靠的查詢了sys.maxsize屬性:

is_64bits = sys.maxsize > 2**32 

請記住,這使字的大小與該蟒蛇口譯員編譯。如果python是在32位模式下編譯的,你可以在64位主機上獲得32的值。

如果該文件是由不同的執行製作,你可以訪問這個可執行文件,您可以使用第一個可選參數的platform.architecture功能:

>>> p.architecture('/path/to/executable') 
('32bit', '') 
1

在Python中沒有「字」的概念,當你從一個文件讀取二進制數據時,你可以明確指出,一次應該讀多少個字節。

就編譯器和/或平臺而言,'WORD'通常決定基本數據單元的大小。 Python是獨立於那種東西:)

0

對於一個單詞是沒有真正的聲音定義;除了某些archetectures調用一些字節數的字(x86調用每個字節2個字節,PPC每個字節調用4個字節),但除了這個任意值外,沒有多大意義。

也許最簡單的解決方案是推遲到struct模塊;例如,格式'h'表示簽名的空格(合理地同意'單詞'的英特爾定義)。所以,你可以這樣做:

>>> import struct 
>>> f = file('.vimrc') 
>>> struct.unpack('h', f.read(struct.calcsize('h'))) 
(8226,) 
>>> 
0

我需要知道在Python中的「字」的字節數。我 需要這個的原因是我的話我需要從文件

然後,你需要問是誰寫文件的人讀的數量。它與Python無關,並且與實際的文件格式有關。一個文件被定義爲一個單詞序列是很奇怪的。它很可能是一個16位或32位整數的序列,否則它實際上是文本意義上的單詞,在這種情況下,您真的無論在分隔符之間掃描文件的標記。

0

怎麼是這樣的:

def machine_word_size(): 
    import sys 
    num_bytes = 0 
    maxint = sys.maxint 
    while maxint > 0: 
     maxint = maxint >> 8 
     num_bytes += 1 
    return num_bytes 
0

或許下面可能是相關的和有益的:假設你的32位檢查。看看是否(-1)< < 31回來或不。對於32位,它不會,而(-1)< < 32和1 < 31。