我需要知道Python中'word'字节的数量。我需要这个的原因是我有我需要从文件中读取的字数;如果我知道一个字中的字节数,我可以使用file.read(num_bytes)
函数从文件中读取适当的数量。如何在Python中确定'word'大小
如何确定单词中的字节数?
我需要知道Python中'word'字节的数量。我需要这个的原因是我有我需要从文件中读取的字数;如果我知道一个字中的字节数,我可以使用file.read(num_bytes)
函数从文件中读取适当的数量。如何在Python中确定'word'大小
如何确定单词中的字节数?
可以使用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', '')
在Python中没有“字”的概念,当你从一个文件读取二进制数据时,你可以明确指出,一次应该读多少个字节。
就编译器和/或平台而言,'WORD'通常决定基本数据单元的大小。 Python是独立于那种东西:)
对于一个单词是没有真正的声音定义;除了某些archetectures调用一些字节数的字(x86调用每个字节2个字节,PPC每个字节调用4个字节),但除了这个任意值外,没有多大意义。
也许最简单的解决方案是推迟到struct
模块;例如,格式'h'
表示签名的空格(合理地同意'单词'的英特尔定义)。所以,你可以这样做:
>>> import struct
>>> f = file('.vimrc')
>>> struct.unpack('h', f.read(struct.calcsize('h')))
(8226,)
>>>
我需要知道在Python中的“字”的字节数。我 需要这个的原因是我的话我需要从文件
然后,你需要问是谁写文件的人读的数量。它与Python无关,并且与实际的文件格式有关。一个文件被定义为一个单词序列是很奇怪的。它很可能是一个16位或32位整数的序列,否则它实际上是文本意义上的单词,在这种情况下,您真的无论在分隔符之间扫描文件的标记。
怎么是这样的:
def machine_word_size():
import sys
num_bytes = 0
maxint = sys.maxint
while maxint > 0:
maxint = maxint >> 8
num_bytes += 1
return num_bytes
或许下面可能是相关的和有益的:假设你的32位检查。看看是否(-1)< < 31回来或不。对于32位,它不会,而(-1)< < 32和1 < 31。
定义'单词'。你是指记忆单位还是语言概念? –
我没有指定。我的意思是记忆的单位,我认为这是在@TokenMacGuy所说的Python中未定义的。 – jlconlin
单词中的字节数应该由文件格式决定,而不是由Python决定。您应该看看创建该文件的应用程序。 –