【发布时间】:2018-11-04 05:45:24
【问题描述】:
我正在尝试将列表从服务器发送到客户端。 列表如下所示(它是一个 csv 文件)。
201,8,0040000080
205,8,1f421d25721e
但发送时出现此错误:
TypeError: must be string or buffer, not list
我尝试了 2 个选项:
-
遍历列表并将每个字符串发送到服务器,但结果如下:
201 ---> 2,0,1
-
尝试转换每一行,例如 str(line),然后发送它,但得到了这个:
201,8,0040000080 ---> [,',2,0,1,',",", ,',8,',",", ,',0,0,4 ,0,0,0,0,0,8,0,',]
我该如何解决这个问题?我只想按原样将数据从客户端发送到服务器。作为记录,客户端代码:
import socket
import csv
clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
with open('can_data.csv', 'rb') as csv_file:
csv_reader = csv.reader(csv_file)
for line in csv_reader:
clientSock.sendto(str(line), (self.address, self.port))
服务器代码:
with open('output.csv', 'wb') as new_file:
csv_writer = csv.writer(new_file)
while True:
data, addr = s.recvfrom(1024)
csv_writer.writerow(data)
【问题讨论】:
-
您的数据需要以某种方式进行序列化。
pickle和json是两个不错的选择。 -
或者,在处理之前发送csv文本文件。
-
python socket.sendto的可能重复
标签: arrays python-2.7 csv sockets stream