本文的目的是介绍在Python中从二进制文件读取整数的详细情况,特别关注在python中从二进制文件读取整数的方法的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解在P
本文的目的是介绍在Python中从二进制文件读取整数的详细情况,特别关注在python中从二进制文件读取整数的方法的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解在Python中从二进制文件读取整数的机会,同时也不会遗漏关于Python zipfile从二进制文件中删除执行权限、Python – 从二进制文件中读取10位整数、Python 二进制文件读取显示、python 读取''.bit''二进制文件的知识。
本文目录一览:- 在Python中从二进制文件读取整数(在python中从二进制文件读取整数的方法)
- Python zipfile从二进制文件中删除执行权限
- Python – 从二进制文件中读取10位整数
- Python 二进制文件读取显示
- python 读取''.bit''二进制文件
在Python中从二进制文件读取整数(在python中从二进制文件读取整数的方法)
我正在尝试在Python中读取BMP文件。我知道前两个字节表示BMP公司。接下来的4个字节是文件大小。当我执行时:
fin = open("hi.bmp", "rb")firm = fin.read(2) file_size = int(fin.read(4))
我得到:
ValueError:以10为底的int()的无效文字:’F#\ x13’
我想做的是将这四个字节读取为整数,但是Python似乎将它们读取为字符并返回一个字符串,该字符串无法转换为整数。如何正确执行此操作?
答案1
小编典典该read
方法将字节序列作为字符串返回。要将字符串字节序列转换为二进制数据,请使用内置struct
模块:http
:
//docs.python.org/library/struct.html。
import structprint(struct.unpack(''i'', fin.read(4)))
请注意,unpack
始终返回一个元组,因此struct.unpack(''i'', fin.read(4))[0]
给出您要使用的整数值。
您可能应该使用格式字符串''<i''
(<是修饰符,用于指示小尾数字节顺序,标准大小和对齐方式-
默认是使用平台的字节顺序,大小和对齐方式)。根据BMP格式规范,字节应以Intel / little-endian字节顺序写入。
Python zipfile从二进制文件中删除执行权限
>目录是rwx-r-xr-x
>文件是rwxr-xr-x或rw-r – r–
但是当我从同一文件上的Python 2.7脚本运行zipfile.extractall()时……
>目录是rwx-r-x —
>文件都是rw-r —- – 甚至是那些应该是可执行文件的文件.
我的umask设置是0027-这部分解释了发生了什么,但为什么可执行位从所有文件中删除?
让Python在命令行版本中采用类似行为的最简单的解决方法是什么(当然,除了炮轰外!)?
解决方法
解决这个问题的最简单方法是通过继承ZipFile并更改extract()(或在扩展版本中修补.默认情况下它是:
def extract(self,member,path=None,pwd=None): """Extract a member from the archive to the current working directory,using its full name. Its file information is extracted as accurately as possible. `member' may be a filename or a ZipInfo object. You can specify a different directory using `path'. """ if not isinstance(member,ZipInfo): member = self.getinfo(member) if path is None: path = os.getcwd() return self._extract_member(member,path,pwd)
应该更改最后一行以实际根据原始属性设置模式.你可以这样做:
import os from zipfile import ZipFile,ZipInfo class MyZipFile(ZipFile): def extract(self,pwd=None): if not isinstance(member,ZipInfo): member = self.getinfo(member) if path is None: path = os.getcwd() ret_val = self._extract_member(member,pwd) attr = member.external_attr >> 16 os.chmod(ret_val,attr) return ret_val with MyZipFile('test.zip') as zfp: zfp.extractall()
(以上是基于Python 3.5并假设zipfile名为test.zip)
Python – 从二进制文件中读取10位整数
我有一个包含10位整数流的二进制文件.我想读它并将值存储在列表中.
它使用以下代码,它读取my_file并使用整数值填充像素:
file = open("my_file","rb")
pixels = []
new10bitsByte = ""
try:
byte = file.read(1)
while byte:
bits = bin(ord(byte))[2:].rjust(8,'0')
for bit in reversed(bits):
new10bitsByte += bit
if len(new10bitsByte) == 10:
pixels.append(int(new10bitsByte[::-1],2))
new10bitsByte = ""
byte = file.read(1)
finally:
file.close()
将字节读入位并将其读回“10位”字节似乎并不优雅.有没有更好的方法呢?
对于8位或16位整数,我可以使用file.read(size)并将结果直接转换为int.但是在这里,因为每个值都存储在1.25字节中,我需要像file.read(1.25)这样的东西…
总结
以上是小编为你收集整理的Python – 从二进制文件中读取10位整数全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Python 二进制文件读取显示
- filename=raw_input('enter file name:')
- f=open(filename,'rb')
- f.seek(0,0)
- index=0
- for i in range(0,16):
- print "%3s" % hex(i) ,
- "%-3s" % "#" ,
- while True:
- temp=f.read(1)
- if len(temp) == 0:
- break
- else:
- "%3s" % temp.encode('hex'),0); background-color:inherit"> index=index+1
- if index == 16:
- index=0
- f.close()
从这里,可以看出,print语句和C的printf对格式要求是一致的,或者说,Python采用了C的格式规范。
python 读取''.bit''二进制文件
请问,我想读取一个''.bit''二进制文件,用open(''路径'',''rb'')然后进行读取,在IDLE里测试发现,读取出的数据为
\x00\t\x0f\xf0\x0f\xf0\x0f\xf0\x0f\xf0\x00\x00\x01
但是我用UE打开这个''.bit''文件后,发现数据时是
00 09 0F F0 0F F0 0F F0 0F F0 00 00 01
为什么第二位的''09''用rb读取后会变成''\t''?
或者怎么能正确读取这个二进制文件?
今天关于在Python中从二进制文件读取整数和在python中从二进制文件读取整数的方法的讲解已经结束,谢谢您的阅读,如果想了解更多关于Python zipfile从二进制文件中删除执行权限、Python – 从二进制文件中读取10位整数、Python 二进制文件读取显示、python 读取''.bit''二进制文件的相关知识,请在本站搜索。
本文标签: