2011-08-02 38 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。