首页  > 教育解读  > python3

python3

2025-05-10 11:27:22
耐性与骨气
耐性与骨气已认证

耐性与骨气为您分享以下优质知识

在Python3中,将文本转换为二进制主要有以下三种方法,涵盖文件批量处理和字符串编码转换:

一、批量处理文本文件为二进制文件

适用于需要处理大量文本文件并生成对应二进制文件的场景。通过遍历文件夹中的文本文件,读取内容后使用`pickle`或`struct`模块进行序列化。

示例代码(使用`pickle`):

```python

import os

import pickle

dirroot = "F:feature_train"

newdirroot = "F:new"

for dirnames in os.listdir(dirroot):

for filename in os.listdir(os.path.join(dirroot, dirnames)):

if filename.endswith('.txt'):

filepath = os.path.join(dirroot, dirnames, filename)

with open(filepath, 'rb') as f:

data = f.read()

new_filename = os.path.splitext(filename) + '.dat'

with open(os.path.join(newdirroot, dirnames, new_filename), 'wb') as f:

pickle.dump(data, f)

```

示例代码(使用`struct`):

```python

import os

import struct

dirroot = "F:feature_train"

newdirroot = "F:new"

for dirnames in os.listdir(dirroot):

for filename in os.listdir(os.path.join(dirroot, dirnames)):

if filename.endswith('.txt'):

filepath = os.path.join(dirroot, dirnames, filename)

with open(filepath, 'rb') as f:

data = f.read()

new_filename = os.path.splitext(filename) + '.dat'

with open(os.path.join(newdirroot, dirnames, new_filename), 'wb') as f:

f.write(struct.pack('i', len(data))) 先写入数据长度

f.write(data)

```

二、字符串编码为二进制(常用方法)

适用于单个字符串或少量数据的转换,主要通过`encode`方法实现。

示例代码:

```python

字符串转二进制(UTF-8编码)

s = "我是中国人"

binary_data = s.encode('utf-8') 结果: b'xe6x88x91xe6x98xafxe4xb8xadxe5x9bxbdxe4xbaxba'

print(binary_data)

二进制转字符串

decoded_data = binary_data.decode('utf-8') 结果: 我是中国人

print(decoded_data)

```

三、使用`struct`模块进行二进制打包

适用于需要固定格式二进制数据的场景,如网络通信或文件存储。

示例代码:

```python

import struct

s = "hello, world!"

binary_data = struct.pack('s', s.encode('utf-8')) 结果: b'hello, world!'

print(binary_data)

反序列化

decoded_s = binary_data.decode('utf-8')

print(decoded_s)

```

总结

批量处理:推荐使用`pickle`或`struct`模块,前者适合复杂数据结构,后者适合固定格式二进制数据。

单个字符串:使用`encode`方法(如UTF-8)进行转换,支持文本与二进制之间的双向解析。