怎么使用python socket以流式形式一行行发送csv文件中的数据?
时间: 2024-04-09 15:28:20 浏览: 9
要以流式形式一行行发送 CSV 文件中的数据,你可以使用 Python 的 Socket 模块和 CSV 模块来实现。以下是一个简单的示例代码,演示了如何逐行发送 CSV 文件数据:
发送端(client)代码:
```python
import socket
import csv
# 创建 Socket 连接
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
client_socket.connect(server_address)
# 打开 CSV 文件
with open('data.csv', 'r') as file:
csv_reader = csv.reader(file)
# 逐行发送数据
for row in csv_reader:
# 将行数据转换为字符串,并添加换行符
data = ','.join(row) + '\n'
# 发送数据
client_socket.sendall(data.encode())
# 关闭连接
client_socket.close()
```
接收端(server)代码:
```python
import socket
# 创建 Socket 连接
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
server_socket.bind(server_address)
server_socket.listen(1)
# 等待客户端连接
print('等待客户端连接...')
client_socket, client_address = server_socket.accept()
print('客户端已连接:', client_address)
# 接收数据
received_data = b''
while True:
data = client_socket.recv(4096)
if not data:
break
received_data += data
# 解码数据并按行分割
received_data = received_data.decode()
lines = received_data.split('\n')
# 打印接收到的数据
for line in lines:
print(line)
# 关闭连接
client_socket.close()
server_socket.close()
```
上述代码中,发送端逐行读取 CSV 文件,并将每一行数据转换为字符串后发送给接收端。接收端接收数据后,按行分割并打印出来。
确保发送端和接收端的代码在相同的网络环境中运行,并使用相同的 IP 地址和端口号。此外,确保发送端能够找到正确的 CSV 文件路径。
希望这个示例能满足你的需求!如果你有任何进一步的问题,请随时提问。