精华内容
下载资源
问答
  • Python二进制文件的读取与写入

    万次阅读 2019-06-20 19:12:59
    Python二进制文件的读取与写入 当读取音视频、图片等二进制文件时,需要采用二进制的读取方法。 一、读取 with open(file,mode) as f: pass file:文件路径 mode:rb 读取二进制文件 strb = f.read() 功能:一次性读取...

    Python二进制文件的读取与写入

    当读取音视频、图片等二进制文件时,需要采用二进制的读取方法。

    一、读取

    with open(file,mode) as f:
    pass

    file:文件路径
    mode:rb 读取二进制文件

    strb = f.read()
    功能:一次性读取所有内容,以二进制的字符串返回。

    strb = f.read(size)
    功能:一次性读取size个字节

    注意:一般情况下,使用f.read(size)居多

    with open("1.jpg","rb") as f:
        #循环读取一张图片,一次性读取1024个字节
        while True:
            strb = f.read(1024)
            if strb == b"":
                break
            print(strb)
    

    二、写入

    with open(file,mode) as f:
    pass

    file:文件路径
    mode:wb/ab 读取二进制文件
    f.write(strb)

    def copyfile(path1,path2):
        with open(path1,"rb") as f1:
            with open(path2,"wb") as f2:
                while True:
                    strb = f1.read(1024)
                    if strb == b"":
                        break
                    f2.write(strb)
    
    展开全文
  • 如果读取的文件二进制文件,如图片,视频需要使用"rb"模式3. 读取非ASCII编码的文本文件,必须 以二进制模式打开,再解码f=open("E:/test.txt","rb")f.read().decod...

    打开方式

    指针位置

    读取的文件类型

    r

    只读(默认模式)

    指针在文件开头,文件不存在则报错

    1. 默认读取文件都是ASCII编码的文本文件

    2. 如果读取的文件是二进制文件,如图片,视频需要使用"rb"模式

    3. 读取非ASCII编码的文本文件,必须 以二进制模式打开,再解码

    f=open("E:/test.txt","rb")

    f.read().decode("gbk")

    rb

    二进制格式只读

    指针在文件开头,文件不存在则报错

    r+

    可读可写

    指针在文件开头,文件不存在则报错

    rb+

    二进制格式可读可写

    指针在文件开头,文件不存在则报错

    w

    只写

    文件存在,则覆盖;不存在,则创建

    wb

    二进制格式只写

    文件存在,则覆盖;不存在,则创建

    w+

    可读可写

    文件存在,则覆盖;不存在,则创建

    wb+

    二进制格式可读可写

    文件存在,则覆盖;不存在,则创建

    a

    追加

    文件存在,指针在文件尾增加;不存在,则创建

    ab

    二进制格式追加

    文件存在,指针在文件尾增加;不存在,则创建

    a+

    可读可写

    文件存在,指针在文件尾增加;不存在,则创建

    ab+_

    二进制格式可读可写

    文件存在,指针在文件尾增加;不存在,则创建

    二、文件打开方法

    举例

    文件不存在

    是否需要调用close()方法

    注意

    Python内置open函数

    f=open("E:/test.txt","r")

    文件不存在则会IOError

    必须书写调用close()

    1.文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也有限

    2.当写文件时,操作系统不会立刻将数据写入磁盘,而是放内容缓存,空闲时再写入,只有调用close()方法时,操作数据才会将没有写入的数据写入磁盘。不写close()方法有可能只写了一部分数据到磁盘,剩下的数据丢失了

    3.文件不存在,可以用try…finally避免,但与with比较麻烦

    With语句

    with open("E:/test.txt","r") as f:

    文件不存在则会IOError

    with语句自动调用close()方法

    三、文件读写定位操作

    方法

    用法

    注意

    f.read(size)

    如果没有size即f.read()一次性读取文件全部内容,返回类型str;如果有size即f.read(50)读取最多的字节内容

    1.文件很小,可一次性读取,文件较大,超过内存大小,内容爆掉

    2.文件过大,可用f.read(size),x为每次最多读取size字节的内容

    3.如果是配置文件,调用readlines()最方便

    f.readline()

    每次读取一行内容,返回类型str

    f.readlines()

    一次读取所有内容并按行返回list

    f.write()

    写文件

    将字符串写入文件,如果写入结束,需要在字符串后面加上" "

    定位

    f.seek(offset,from_what)

    f.seek(2,0)读取位置向后移动2个字符

    from_what值为文件的开始位置,可以省略;offset为偏移量

    当前位置

    f.tell()

    f.tell(),返回当前文件位置

    四、读取非ASCII文件,如utf-8,gbk类型

    方法1:读取时指定类型encoding="utf-8"

    with open("E:/test1.txt","r",encoding="utf-8") as f

    print(f.read())

    结果:

    你好

    方法2:

    必须:1.以二进制模式打开,再解码

    codecs模块:读文件时自动转换编码,直接读出unicode

    import codecs

    with codecs.open("E:/test.txt","rb","utf-8") as f:

    f.read()

    注意:有些编码不规范,会遇到UnicodeDecodeError,可能文件中有些非法编码的字符,遇到这种情况,可用open()函数可以接收errors参数,表示如果遇到编码错误后如何 处理,最简单方式是直接忽略f=open("E:/test1.txt","r",encoding="gbk",errors="ignore")

    五、File对象的属性

    f.closed

    文件已关闭返回true,否则返回false

    f.mode

    返回被打开文件的访问模式

    f.name

    返回文件名称

    展开全文
  • python写入二进制文件

    2019-08-14 20:47:00
    python写入二进制文件 对于大于255的数字可以将‘B’换成‘H’或者‘L’,可以百度一下struct的用法 ...

     

     

    对于大于255的数字可以将‘B’换成‘H’或者‘L’,可以百度一下struct的用法

    posted on 2019-08-14 20:47 夏天哥哥 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/xiatianhe/p/11354604.html

    展开全文
  • python二进制读写文件与普通文件

    千次阅读 2016-03-30 13:12:37
    c[1]为email获取的list邮件源字符,是bytes类型 no_msg_content=b'\r\n'.join(c[1]) msg_content=b'\r\n'.join(c[1]).decode('utf-8') 普通读写 write d=open(str(e)+'.eml','w') ...普通写入经过ut

    c[1]为email获取的list邮件源字符,是bytes类型

    no_msg_content=b'\r\n'.join(c[1])
    msg_content=b'\r\n'.join(c[1]).decode('utf-8')


    普通读写


    write

    d=open(str(e)+'.eml','w')

    d.write(msg_content)

    普通写入经过utf8解码的字符串,utf8解码 \r\n后 字符串为两个换行符\n\n

    read

    读取结果

    读取结果!=写入的msg_content


    二进制读写


    write

    d=open(str(e)+'.eml','wb')

    d.write(no_msg_content)

    二进制写入,没有经过解码, bytes(utf-8)字符 的\r\n

    read

    读取结果==写入的no_msg_content  




    结果:

    使用email  Parser().parsestr()解析两个读取到的字符,结果不相同



    展开全文
  • python 读取,储存二进制文件 import struck def load_array(file, big=False): """ 从二进制文件中加载二维数组并返回 :param big: :param file: :return: """ # print('load binary data from %s' % file...
  • 使用python完成数组的二进制写入和读取概要文本保存/读取实例二进制保存/读取 概要 某些时候,程序运行的中间变量需要通过文件保存下来,有两种方式,一种是以人看的懂的文本格式保存,一种是以机器看的懂的二进制...
  • 1.二进制文件的输入输出 (1)、struct和pickle<br> 使用struct模块,进行数据的输入输出 ...第二,使用write()写入写入后以二进制的方式进行文件存储。 第三,读取时,首先采用...
  • python对二进制文件的操作需要使用bytes类,直接写入整数是不行的,如果试图使用f.write(123)向文件中以二进制写入123,结果提示参数不是bytes类型。 import os import struct a = 0x1A2B3C4D b = 0x239875ad3d5...
  • 前一阵在做一个项目时,会用到java和python,上下游的关系(java写,python读),但是发现两者的二进制文件无法直接读取,后来发现是由于编码的原因,比如在写入int时,一个是从左到右开始编码,一个是从右到左,...
  • 这段代码把文件写入硬盘怎么直接就是。jpg格式了 怎么把res.content直接转换成opencv可用的mat ![图片说明](https://img-ask.csdn.net/upload/201608/29/1472463103_10975.png)
  • array=['0','1','1','0','1'] ... li.append(int(''.join(s[i:i+8]),2)) #将二进制字符串8个一组,转成整数 with open('result','wb') as f: for x in li: s1 = struct.pack('B',x) # struct的参数x
  • Python二进制文件的读取与写入 一、读取 with open(file,mode) as f: pass file:文件路径 mode:rb 读取二进制文件 strb = f.read() 功能:一次性读取所有内容,以二进制的字符串返回。 strb = f.read(size) 功能:一...
  • (转)python写入二进制文件

    千次阅读 2019-03-14 22:52:47
    简言之就是用struct.pack将要变成字节的数据打包然后以字节的形式写入二进制文件,字节的形式是b'\x01',而非 b'0x01'或者b'x01'之类的形式,可以用 UltraEdit 查看:如果UltraEdit只显示右侧不能显示左侧十六...
  • 二进制文件的处理流程和文本文件流程一致。 只需要再执行代码后加’b’。 with open('1.jpg','rb')as f: with open('1_copy.jpg','wb')as e: for line in f.readlines(): e.write(line) print('拷贝完成!') 》...
  • with open('./file/test.txt', 'wb+') as f: for i in nums: s = struct.pack('i', i) f.write(s) 读: nums = [] with open('./file/2010.txt', 'rb+') as f: for i i...
  • import struct li=[0x50,0x4b,0x3,0x4] #待写入的数据 with open("testfile","wb") as fp: for x in array: s = struct.pack('B',x)#转换为字节流字符串,B代表unsigned char fp.write(s) fp.close()
  • python读写二进制文件

    2017-10-04 20:57:10
    需求python读取一个二进制文件,然后写入另一个文件,在这里关键是判断文件长度的语句:os.path.getsize('file') #!/usr/bin/env python import os f1 = open("wxPython4.jpg", "w") #f1.write(data) ...
  • python 读写二进制文件

    千次阅读 2018-07-21 19:12:00
    一个字节8位,4个字节32位,也就是2^32; Python创建并把数据写入二进制文件 import struct f = open('n.dat', 'wb') a = struct.pack(‘I’, 0)#I是i的大写 f.write(a)   可参考: ...
  • #之前一直没明白文件处理中的w和wb的区别到底是什么,#在看过视频后才知道,原来在linux里面是没有区别的,#但是在windows里面就能够看出区别来了#下面来个例子: withopen("普通文本文件.txt","w",encoding='utf-8')as...
  • python 读写二进制文件实例

    千次阅读 2018-07-16 23:51:00
    本程序,首先写入一个矩阵到二进制文件中,然后读取二进制文件恢复到另外一个矩阵中。 #coding:utf--8 #https://www.cnblogs.com/cmnz/p/6986979.html #https://blog.csdn.net/uuihoo/article/details/79848726 ...
  • [Python]写入二进制文件

    千次阅读 2019-01-08 16:40:36
    import struct with open(file_name_dir, 'wb')as fp: for x in data_pack: a = struct.pack('i', int(x)) fp.write(a) fp.close() pack的格式:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,141
精华内容 456
关键字:

python二进制写入文件

python 订阅