本文将从多个方面对Python数据流类型(Data Stream Types)做详细的阐述,旨在帮助Python开发工程师更好地理解和应用这些类型。
一、Bytes和Byte Arrays
Bytes和Byte Arrays是Python最常用的数据流类型,一般用于表示二进制数据。
Bytes:
#创建一个Bytes对象
b = bytes([0x41, 0x42, 0x43, 0x44])
print(b) #b'ABCD'
#Bytes对象支持索引和切片
print(b[0]) #65
print(b[1:3]) #b'BC'
Byte Arrays:
#创建一个ByteArray对象
ba = bytearray([0x41, 0x42, 0x43, 0x44])
print(ba) #bytearray(b'ABCD')
#ByteArray对象支持索引和切片
print(ba[0]) #65
print(ba[1:3]) #bytearray(b'BC')
#ByteArray对象还支持赋值和修改
ba[0] = 0x45
print(ba) #bytearray(b'EBCD')
二、StringIO和BytesIO
StringIO和BytesIO是Python中的内存文件流类型,可以方便地在内存中读写文件。
StringIO:
from io import StringIO
#创建一个StringIO对象
sio = StringIO()
#向StringIO对象写入数据
sio.write('Hello, World!')
#读取StringIO对象中的数据
sio.seek(0)
print(sio.read()) #Hello, World!
BytesIO:
from io import BytesIO
#创建一个BytesIO对象
bio = BytesIO()
#向BytesIO对象写入数据
bio.write(b'Hello, World!')
#读取BytesIO对象中的数据
bio.seek(0)
print(bio.read()) #b'Hello, World!'
三、Gzip和Bzip2压缩流
Gzip和Bzip2压缩流是Python中的压缩库,用于压缩、解压缩文件。
Gzip:
import gzip
#打开一个Gzip压缩文件并写入数据
with gzip.open('test.txt.gz', 'wb') as f:
f.write(b'Hello, World!')
#读取Gzip压缩文件中的数据
with gzip.open('test.txt.gz', 'rb') as f:
print(f.read()) #b'Hello, World!'
Bzip2:
import bz2
#打开一个Bzip2压缩文件并写入数据
with bz2.open('test.txt.bz2', 'wb') as f:
f.write(b'Hello, World!')
#读取Bzip2压缩文件中的数据
with bz2.open('test.txt.bz2', 'rb') as f:
print(f.read()) #b'Hello, World!'
四、json和pickle序列化流
Json和Pickle是Python中的序列化库,用于将Python对象转换为字符串或者二进制流,以便于存储和传输。
Json:
import json
#将Python对象转换为Json字符串
data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)
print(json_str) #{"name": "John", "age": 30}
#将Json字符串转换为Python对象
data = json.loads(json_str)
print(data) #{'name': 'John', 'age': 30}
Pickle:
import pickle
#将Python对象转换为二进制流
data = {'name': 'John', 'age': 30}
bin_data = pickle.dumps(data)
#将二进制流转换为Python对象
data = pickle.loads(bin_data)
print(data) #{'name': 'John', 'age': 30}
本文链接:https://my.lmcjl.com/post/10935.html
展开阅读全文
4 评论