美文网首页
读写操作with open

读写操作with open

作者: LittleBear_6c91 | 来源:发表于2019-05-09 19:54 被阅读0次

问题
你想读写二进制文件,比如图片,声音文件等等。
解决方案
使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据。比如:

# Read the entire file as a single byte string
with open('somefile.bin', 'rb') as f:
data = f.read()
# Write binary data to a file
with open('somefile.bin', 'wb') as f:
f.write(b'Hello World')

在读取二进制数据时,需要指明的是所有返回的数据都是字节字符串格式的,而不
是文本字符串。类似的,在写入的时候,必须保证参数是以字节形式对外暴露数据的对
象 (比如字节字符串,字节数组对象等)。
讨论
在读取二进制数据的时候,字节字符串和文本字符串的语义差异可能会导致一个
潜在的陷阱。特别需要注意的是,索引和迭代动作返回的是字节的值而不是字节字符
串。比如:


image.png

如果你想从二进制模式的文件中读取或写入文本数据,必须确保要进行解码和编
码操作。比如:

with open('somefile.bin', 'rb') as f:
data = f.read(16)
text = data.decode('utf-8')
with open('somefile.bin', 'wb') as f:
text = 'Hello World'
f.write(text.encode('utf-8'))

二进制 I/O 还有一个鲜为人知的特性就是数组和 C 结构体类型能直接被写入,而
不需要中间转换为自己对象。比如:

import array
nums = array.array('i', [1, 2, 3, 4])
with open('data.bin','wb') as f:
f.write(nums)

这个适用于任何实现了被称之为”缓冲接口”的对象,这种对象会直接暴露其底层
的内存缓冲区给能处理它的操作。二进制数据的写入就是这类操作之一。
很多对象还允许通过使用文件对象的 readinto() 方法直接读取二进制数据到其底
层的内存中去。比如:

>>> import array
>>> a = array.array('i', [0, 0, 0, 0, 0, 0, 0, 0])
>>> with open('data.bin', 'rb') as f:
... f.readinto(a)
...
16
>>> a
array('i', [1, 2, 3, 4, 0, 0, 0, 0])
>>>

相关文章

  • python:open 中的method

    open/文件操作f=open('/tmp/hello','w') open(路径+文件名,读写模式) 读写模式:...

  • 读写操作with open

    问题你想读写二进制文件,比如图片,声音文件等等。解决方案使用模式为 rb 或 wb 的 open() 函数来读取或...

  • Python :open文件操作,配合read()使用!

    open/文件操作 f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打...

  • 文件读写总结

    1. C++文件读写详解 1.1. 文件读写操作 使用方式 1.1.1. 打开文件 文件操作通过成员函数open(...

  • Python: 文件操作

    文件操作 文件操作,无外乎读写,但首先你要打开文件。 打开文件 f = open(filename, mode) ...

  • Python之文件操作

    文件读写 文件读写是最基本的IO操作,在Python中内置了open函数来用于文件的读写操作,此函数创建一个文件对...

  • 【Linux系统管理1】

    文件读写 open函数 在Python中,要对一个文件进行操作,需要使用内置的open函数打开文件。open函数接...

  • 【Python】文件读写

    不管什么语言,读写文件都是最基本而且最常用的操作。在进行读写操作之前,必须先用Python内置的open()函数打...

  • Python获取文件信息

    文件读写 open()与file() open()方法使用python内建函数操作文件file()则是构建了一个f...

  • Python 文件操作中的读写模式:open

    Python 文件操作中的读写模式:open(path, '-模式-',encoding='UTF-8') ope...

网友评论

      本文标题:读写操作with open

      本文链接:https://www.haomeiwen.com/subject/sfbgoqtx.html