python写入二进制(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

争议总的感觉,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'来表示换行。

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

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

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

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

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

4.Python写一个类,能将任意多条记录性数据写入二进制文件,能自动读

import random

class WRB(object):

def Write(self,Text):

with open(r'a.text','ab') as f:

f.write((Text+'\n').encode('utf-8'))

print((Text+'\n').encode('utf-8'))

def Read(self):

with open('a.text','rb') as f:

text=f.readlines()

a=random.sample(text,1)

print(a[0].decode('utf-8').strip('\n'))

test=WRB()

test.Write('测试')

test.Write('测试数据 2测试数据2测试数据2测试数2')

test.Read()

5.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'

python写入二进制

转载请注明出处代码入门网 » python写入二进制(Python:如何写入指定大小二进制数据)

资讯

python编写应用程序(怎么用python开发一个应用)

阅读(40)

本文主要为您介绍python编写应用程序,内容包括如何用Python编写应用程序,怎么用python开发一个应用,如何用Python编写应用程序。系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。 图形处理:

资讯

pythonhtmltable(用python生成在html中显示的表格)

阅读(39)

本文主要为您介绍pythonhtmltable,内容包括用python生成在html中显示的表格,怎么用python编写得到本地网页html中的表格,如何用python获取最简单的一个html表单。可以通过写python脚本制作HTML的form,包括HTML的标签什么的python 有个第三方

资讯

pythonwebdriverapi(如何查看pythonselenium的api)

阅读(29)

本文主要为您介绍pythonwebdriverapi,内容包括如何查看pythonselenium的api,如何查看pythonselenium的api,seleniumapi有什么用。经常发现很多同学装好了python+selenium webdriver开发环境后不知道怎么去查看api文档,在这里乙醇简单介绍一

资讯

pythonimagegrab(Python程序抓图怎么用程序实现截图)

阅读(29)

本文主要为您介绍pythonimagegrab,内容包括Python程序抓图怎么用程序实现截图,如何添加一个截图来诱惑报告Python,python中有哪个库提供了对屏幕截屏功能的。由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实

资讯

pythondll指针(怎样用python调用dll)

阅读(69)

本文主要为您介绍pythondll指针,内容包括python中如何查看dll文件中的函数,如何用python调用应用程序的.dll文件,回调函数指针在python中怎么用。可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywal

资讯

python中from(python中fromtimeimportsleep是什么意思)

阅读(25)

本文主要为您介绍python中from,内容包括Python的fromimport和import的区别,python中fromstring怎么用,python中fromstring怎么用。from time import sleep就是从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠(推迟调用线程的

资讯

python求完数(用python语言编程完数就找1到1000怎么做)

阅读(28)

本文主要为您介绍python求完数,内容包括求1000以内完数的python代码,有没有办法再提升下效率,用python语言编程完数就找1到1000怎么做,用python语言编程完数就找1到1000怎么做。#include<stdio.h>int main(){int i,j,s;for(i=2;i<=1000;i++

资讯

pythonjson写入csv(在pycharm中怎么把json文件转换为csv)

阅读(31)

本文主要为您介绍pythonjson写入csv,内容包括Python怎么读写json格式文件,怎么用python解析csv很json文件,如何将json的数据转化成csv的数据格式。由于工作需要,经常需要将mysql数据库中的数据导出到excel表格,或者需要将excel表格数据导入到

资讯

pythonweka(如何用python调用weka函数)

阅读(33)

本文主要为您介绍pythonweka,内容包括如何用python调用weka函数,是用python学数据挖掘好,还是用java学weka的开发好,如何在python程序中调用weka的分类器。Example:def gender_features(name):features = {}for letter in abcdefg

资讯

pythonthrow(python中return到底什么意思)

阅读(70)

本文主要为您介绍pythonthrow,内容包括python有没有throw关键字,python中转义字符是什么,python中return到底什么意思。return,就是函数返回传。每一个函数都必须有一个返回值的,如果函数中没有写return,默认返回为None对象比如:def add(

资讯

chardetpython(python中文解码)

阅读(25)

本文主要为您介绍chardetpython,内容包括python在windows怎么安装chardet,请问python如何安装模块,怎么安装python的模块。python中有一个chardet库,这个可以查看你的编码是什么>>> import chardet>>> print chardet.

资讯

imagemagickpython(如何利用Python对PDF文件做OCR识别)

阅读(30)

本文主要为您介绍imagemagickpython,内容包括如何用python控制imagemagick,python项目中怎么导入zbar,如何利用Python对PDF文件做OCR识别。1.安装tesseract在不同的系统中安装tesseract非常容易。为了简便,我们以Ubuntu为例。在Ubuntu中你仅

资讯

python编写应用程序(怎么用python开发一个应用)

阅读(40)

本文主要为您介绍python编写应用程序,内容包括如何用Python编写应用程序,怎么用python开发一个应用,如何用Python编写应用程序。系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。 图形处理:

资讯

pythonhtmltable(用python生成在html中显示的表格)

阅读(39)

本文主要为您介绍pythonhtmltable,内容包括用python生成在html中显示的表格,怎么用python编写得到本地网页html中的表格,如何用python获取最简单的一个html表单。可以通过写python脚本制作HTML的form,包括HTML的标签什么的python 有个第三方

资讯

pythonwebdriverapi(如何查看pythonselenium的api)

阅读(29)

本文主要为您介绍pythonwebdriverapi,内容包括如何查看pythonselenium的api,如何查看pythonselenium的api,seleniumapi有什么用。经常发现很多同学装好了python+selenium webdriver开发环境后不知道怎么去查看api文档,在这里乙醇简单介绍一

资讯

pythonimagegrab(Python程序抓图怎么用程序实现截图)

阅读(29)

本文主要为您介绍pythonimagegrab,内容包括Python程序抓图怎么用程序实现截图,如何添加一个截图来诱惑报告Python,python中有哪个库提供了对屏幕截屏功能的。由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实

资讯

pythondll指针(怎样用python调用dll)

阅读(69)

本文主要为您介绍pythondll指针,内容包括python中如何查看dll文件中的函数,如何用python调用应用程序的.dll文件,回调函数指针在python中怎么用。可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywal

资讯

python日志统计(python有没有通用的日志统计系统)

阅读(27)

本文主要为您介绍python日志统计,内容包括python有没有通用的日志统计系统,如何用python,每隔5分钟对实时日志做统计处理,如何用python分析网站日志。logging模块import logging# 配置日志,输出到控制台logging.basicConfig(level=loggin

资讯

pythonsortedlist(什么是python内置函数sorted)

阅读(1)

本文主要为您介绍pythonsortedlist,内容包括什么是python内置函数sorted,hashtable和SortedList有何区别?,python3.0中sorted函数怎么用。Python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。sort函数和sorte

资讯

pythonjson编码(python如何解析json代码分析)

阅读(1)

本文主要为您介绍pythonjson编码,内容包括python如何解析json代码分析,pythonjson怎么修改json数据,如何在python代码中引用json格式。先import json导入json模块,然后加载json编码如f是读取网页得到的json结构加载:json_r=json.loads(

资讯

pythonsublime设置(如何用sublime运行python)

阅读(1)

本文主要为您介绍pythonsublime设置,内容包括如何用sublime运行python,如何用sublime设置python的开发环境,如何使用sublime编辑器运行python程序。工具/原料SublimeTextPython方法/步骤打开sublimeText,在菜单栏找到Tools>编译系统>新编译

资讯

padavan安装python(anaconda与python什么关系)

阅读(1)

本文主要为您介绍padavan安装python,内容包括老毛子固件在编译的时候怎样加入python,anaconda与python什么关系,padavan华硕怎么安装adbyby。Theano:一个深度学习的开源工具包。Python:一门面抄向对象的、解释型袭的计算机编程(程序设计)语言,由

资讯

win32processpython(怎样使用python查询系统某一进程是否存在)

阅读(2)

本文主要为您介绍win32processpython,内容包括pythonwin32是什么?pythoncom如何理解,怎样使用python查询系统某一进程是否存在,怎样使用python查询系统某一进程是否存在。只需要一小段python代码,就可以解决用python查询判断系统进程是否存

资讯

pythonsslurllib(python报错urllib.error.URLError:)

阅读(2)

本文主要为您介绍pythonsslurllib,内容包括pythonurllib怎么用,pythonurllib,pythonhttplib2urllib区别。jango站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown ur