python二进制文件写入

1.Python :如何写入指定大小 二进制数据

用"*"和\xNN. 例子:

写入1024个二进制值0x00:

file('a.bin','wb').write('\x00'*1024)

在文件尾再添加1024个0x01 :

file('a.bin','ab').write('\x01'*1024)

精确 是什么意思? 指定具体要写入的数字1024还不够精确?

如果要保证数据实际写入,刷新IO缓冲区,调用fush或close方法

2.Python 将二进制字符串数据写入文件出现了16进制的0D 数字

conv 函数要求 data_string 长度一定是8的倍数(每8个bit组成一个byte)。用 conv 得到的数据就可以直接写入文件了(open 文件时按照二进制打开)。

def conv(data):

assert (len(data) % 8) == 0, "Invalid binary string data"

fmt = ">{}B".format(len(data) / 8)

bytes = [int(data[x:x+8],2) for x in range(0, len(data), 8)]

return struct.pack(fmt, *bytes)

# test:

>>> conv("")

'\x15U\x08O\x03\r'

3.如何用python生成和读取二进制文件

可以使用numpy.fromfile(),也可以使用open(filename, 'rb'),其中的'b'就是二进制的意思2113,然后使用文件类型的read方法5261,读取一些字节,再用struct.unpack()方法4102来解析二进制。

第一种方法是一次性读入文件(或文件的前多少个连续字节)到一个数组中,因此,灵活性差1653。

第二种方法灵活性很高,可以读取任意位置(使用文件的seek()方法跳跃位置)的二进制数据,再使用struct.unpack()方法来进行各种二进制解析。

提示:二进制文件是不保留存储方版式的数据格权式,因此,读二进制文件时应该知道二进制文件的存储格式。

4.如何进行追加二进制文件 python

争议总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。

python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import struct a=12.34#将a变为二进制 bytes=struct.pack('i',a) 此时bytes就是一个string字符串,字符串按字节同a的二进制存储内容相同。

再进行反操作 现有二进制数据bytes,(其实就是字符串),将它反过来转换成python的数据类型:a,=struct.unpack('i',bytes) 注意,unpack返回的是tuple 所以如果只有一个变量的话:bytes=struct.pack('i',a) 那么,解码的时候需要这样 a,=struct.unpack('i',bytes) 或者 (a,)=struct.unpack('i',bytes) 如果直接用a=struct.unpack('i',bytes),那么 a=(12.34,) ,是一个tuple而不是原来的浮点数了。如果是由多个数据构成的,可以这样:a='hello' b='world!' c=2 d=45.123 bytes=struct.pack('5s6sif',a,b,c,d) 此时的bytes就是二进制形式的数据了,可以直接写入文件比如 binfile.write(bytes) 然后,当我们需要时可以再读出来,bytes=binfile.read() 再通过struct.unpack()解码成python变量 a,b,c,d=struct.unpack('5s6sif',bytes)'5s6sif'这个叫做fmt,就是格式化字符串,由数字加字符构成,5s表示占5个字符的字符串,2i,表示2个整数等等,下面是可用的字符及类型,ctype表示可以与python中的类型一一对应。

Format C Type Python 字节数 x pad byte no value 1 c char string of length 1 1 b signed char integer 1 B unsigned char integer 1 ? _Bool bool 1 h short integer 2 H unsigned short integer 2 i int integer 4 I unsigned int integer or long 4 l long integer 4 L unsigned long long 4 q long long long 8 Q unsigned long long long 8 f float float 4 d double float 8 s char[] string 1 p char[] string 1 P void * long 最后一个可以用来表示指针类型的,占4个字节 为了同c中的结构体交换数据,还要考虑有的c或c++编译器使用了字节对齐,通常是以4个字节为单位的32位系统,故而还提供了 Character Byte order Size and alignment @ native native 凑够4个字节 = native standard 按原字节数 > big-endian standard 按原字节数 ! network (= big-endian) standard 按原字节数 使用方法是放在fmt的第一个位置,就像'@5s6sif'-----二进制文件处理时会碰到的问题----- 我们使用处理二进制文件时,需要用如下方法 binfile=open(filepath,'rb') 读二进制文件 或 binfile=open(filepath,'wb') 写二进制文件 那么和binfile=open(filepath,'r')的结果到底有何不同呢?不同之处有两个地方:第一,使用'r'的时候如果碰到'0x1A',就会视为文件结束,这就是EOF。使用'rb'则不存在这个问题。

即,如果你用二进制写入再用文本读出的话,如果其中存在'0X1A',就只会读出文件的一部分。使用'rb'的时候会一直读到文件末尾。

第二,对于字符串x='abc/ndef',我们可用len(x)得到它的长度为7,/n我们称之为换行符,实际上是 '0X0A'。当我们用'w' 即文本方式写的时候,在windows平台上会自动将'0X0A'变成两个字符'0X0D','0X0A',即文件长度实际上变成8.。

当用'r'文本方式读取时,又自动的转换成原来的换行符。如果换成'wb'二进制方式来写的话,则会保持一个字符不变,读取时也是原样读取。

所以如果用文本方式写入,用二进制方式读取的话,就要考虑这多出的一个字节了。'0X0D'又称回车符。

linux下不会变。因为linux只使用'0X0A'来表示换行。

python二进制文件写入

转载请注明出处代码入门网 » python二进制文件写入

资讯

ubuntupython终端

阅读(43)

本文主要为您介绍ubuntupython终端,内容包括linux终端运行python,linux终端运行python,在ubuntu下每次都要用终端输入python/xxx/xxx/proxy.py好麻烦,能写一。Linux终端中的操作均是使用命令行来进行的。因此,对于小白来说,熟记几个基本的命

资讯

pythonfor重新循环

阅读(41)

本文主要为您介绍pythonfor重新循环,内容包括python这个for循环怎么改,python中for循环怎么用,Python的for循环中,遇到错误后,怎么再按照原来的设置重新运行一遍。1. for 循环介绍复制代码代码如下:>>> li = [a, b, e]>>> for s in li: (1)

资讯

python最小化

阅读(38)

本文主要为您介绍python最小化,内容包括python控制台如何自动最小化,如何把python最小化安装在客户机上面,python最小化客户机,wxpython怎样最小化python.exe窗口。Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Pyt

资讯

python抓取动态网页

阅读(39)

本文主要为您介绍python抓取动态网页,内容包括python如何抓取动态页面内容,如何用Python抓取动态页面信息,如何用Python抓取动态页面信息。输入url,得到html,我早就写了函数了 自己搜:getUrlRespHtml 就可以找到对应的python函数:1234567891

资讯

manualpython

阅读(39)

本文主要为您介绍manualpython,内容包括python是什么软件,如何能快速学会python语言,Python经典书籍。15 人赞同了该回答 经典如何定义?Guido写的python manual算不算 The Python Language Refer

资讯

python替换中文

阅读(37)

本文主要为您介绍python替换中文,内容包括python如何将中文替换为星号,pythonidle怎么调成中文版,python怎么切换中文。Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用unic

资讯

聚类kmeanspython

阅读(33)

本文主要为您介绍聚类kmeanspython,内容包括kmeans算法用Python怎么实现,pythonkmeans聚类怎么确定k的个数,kmeans算法用Python怎么实现。从Kmeans说起Kmeans是一个非常基础的聚类算法,使用了迭代的思想,关于其原理这里不说了。下面说一下如

资讯

python的indexof

阅读(37)

本文主要为您介绍python的indexof,内容包括Python中的index一般是什么意思,怎么个用法,如何安装python的setuptool,indexOf()的用法,具体是什么意思。$wget --no-check-certificate https://pypi.python.org/packages/source

资讯

exceljsonpython

阅读(36)

本文主要为您介绍exceljsonpython,内容包括Python如何把json数据写入excel,Pythonpython如何解析Excel成json并编译成swf文件,如何将Excel文件转为json格式的呢。JSON:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅

资讯

python登录12306

阅读(41)

本文主要为您介绍python登录12306,内容包括python模拟登陆12306,该怎么处理,python3爬12306登录的url出现(网络可能存在问题,请您重试一下,我写了个python读取12306网页的脚本本地运行良好,一旦提交到GAE。给你个我之前写的参考import re;im

资讯

nodejs与python爬虫

阅读(41)

本文主要为您介绍nodejs与python爬虫,内容包括Python和nodeJS哪个更适合做爬虫,Python,Node.js哪个比较适合写爬虫,Python,Node.js哪个比较适合写爬虫。简单的定向爬取:Python + urlib2 + RegExp + bs4 或者Node.js + co,任一一款dom框架或者

资讯

python3map

阅读(37)

本文主要为您介绍python3map,内容包括python中map函数,Python3.5.1的map函数结果输出一串字符,pythonmap函数怎么用啊。对可迭代函数iterable中的每一个元素应用function方法,将结果作为list返回。 来个例子: >>> def add100(

资讯

pythonand短路

阅读(40)

本文主要为您介绍pythonand短路,内容包括python中and、or和not三个逻辑运算符,一直理解不了,求帮助搜,python中的and和c语言中的&的区别是什么,Python中什么是短路逻辑。and、or和not的优先级是not>and>or首先,and、or和not的优先级是not>an

资讯

python2兼容python3

阅读(46)

本文主要为您介绍python2兼容python3,内容包括python3兼容python2吗,python3兼容python2吗,“python2”和“python3”有什么区别。不兼容最明显的是print变成了函数最重要的变化一是python2里的str变为了python3里的byte,而str由unicode

资讯

ubuntupython终端

阅读(43)

本文主要为您介绍ubuntupython终端,内容包括linux终端运行python,linux终端运行python,在ubuntu下每次都要用终端输入python/xxx/xxx/proxy.py好麻烦,能写一。Linux终端中的操作均是使用命令行来进行的。因此,对于小白来说,熟记几个基本的命

资讯

pythonfor重新循环

阅读(41)

本文主要为您介绍pythonfor重新循环,内容包括python这个for循环怎么改,python中for循环怎么用,Python的for循环中,遇到错误后,怎么再按照原来的设置重新运行一遍。1. for 循环介绍复制代码代码如下:>>> li = [a, b, e]>>> for s in li: (1)

资讯

python最小化

阅读(38)

本文主要为您介绍python最小化,内容包括python控制台如何自动最小化,如何把python最小化安装在客户机上面,python最小化客户机,wxpython怎样最小化python.exe窗口。Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Pyt

资讯

python抓取动态网页

阅读(39)

本文主要为您介绍python抓取动态网页,内容包括python如何抓取动态页面内容,如何用Python抓取动态页面信息,如何用Python抓取动态页面信息。输入url,得到html,我早就写了函数了 自己搜:getUrlRespHtml 就可以找到对应的python函数:1234567891

资讯

manualpython

阅读(39)

本文主要为您介绍manualpython,内容包括python是什么软件,如何能快速学会python语言,Python经典书籍。15 人赞同了该回答 经典如何定义?Guido写的python manual算不算 The Python Language Refer

资讯

python替换中文

阅读(37)

本文主要为您介绍python替换中文,内容包括python如何将中文替换为星号,pythonidle怎么调成中文版,python怎么切换中文。Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用unic

资讯

聚类kmeanspython

阅读(33)

本文主要为您介绍聚类kmeanspython,内容包括kmeans算法用Python怎么实现,pythonkmeans聚类怎么确定k的个数,kmeans算法用Python怎么实现。从Kmeans说起Kmeans是一个非常基础的聚类算法,使用了迭代的思想,关于其原理这里不说了。下面说一下如

资讯

python修改excel

阅读(42)

本文主要为您介绍python修改excel,内容包括python如何能对一个excel文件进行编辑,用Python修改excel中一列数据,python有没有可以修改已存在excel文件的模块。你说的源文件指的是什么?从图中看“源文件”中对excel的写入没有分列,把数据都写

资讯

python3.4爬虫入门(如何入门Python爬虫)

阅读(1)

本文主要为您介绍python3.4爬虫入门,内容包括如何入门Python爬虫,python爬虫入门需要哪些基础,python爬虫自学要多久。可以先从简单的开始,在熟悉了Python语法后,学习用 urllib 和 urllib2 爬虫,使用 BeautifulSoup 分析结

资讯

python判定整数(怎样用python判断整数)

阅读(2)

本文主要为您介绍python判定整数,内容包括python怎么判断一个数是整数,python判断一个数是不是整数,python判断一个数是不是整数。import typesif type(var) in [types.IntType,types.LongType]: bodyelse

资讯

python画仪表(如何使用Python在屏幕上作画)

阅读(2)

本文主要为您介绍python画仪表,内容包括如何用python绘制各种图形,如何用Python绘制Circos图,如何使用Python在屏幕上作画。from turtle import *def curvemove():for i in range(200):right(1)forw

资讯

python写入文件编码格式(python2.7.4怎么指定格式编码的文本)

阅读(1)

本文主要为您介绍python写入文件编码格式,内容包括python写文件怎么写gbk编码的文件,python2.7.4怎么指定格式编码的文本,python2.7.4怎么指定格式编码的文本。要写入的数据本身就是byte串(u中文是中文字符串,中文是byte串),用二进制方式打开就

资讯

python小数点保留1位(如何在Python中保留小数)

阅读(2)

本文主要为您介绍python小数点保留1位,内容包括如何在Python中保留小数,Python中小数点的问题,怎么放弃后面位数,只保留前面两位搜狗,python中保留几位小数进行四舍五入的round函数自身的源代码是什么。f = lambda x, n: round(x, n - len(

资讯

python数据采集教程(如何用最简单的Python爬虫采集整个网站)

阅读(2)

本文主要为您介绍python数据采集教程,内容包括如何用最简单的Python爬虫采集整个网站,python做监控数据采集,怎么做.新手请教,如何学习爬虫技术抓取数据。在之前的文章中Python实现“维基百科六度分隔理论“之基础爬虫,我们实现了在一个网站