Python数据流类型

本文将从多个方面对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 评论

留下您的评论.