Python套接字发送数据帧:类型错误:文件必须有“读取”和“阅读线”属性
如何从服务器将选定的数据帧发送到客户端。我有一个数据框,我从中选择特定的数据框。我在客户端遇到错误错误是(TypeError:文件必须具有“read”和“readline”属性)在线pickle.load(已接收)
服务器端
import socket
import pandas as pd
import pickle
df = pd.read_csv(r"C:\Users\DELL\OneDrive\Desktop\mythesisdataset.csv" ,engine='python',
names=[ 'SBP', 'DBP', 'HEARTRATE', "Temperature" ])
normal_df = (df [ (df.SBP > 120) & (df.DBP > 90) & (df.HEARTRATE < 100) & (df [ 'Temperature' ] < 100) ])
print(normal_df)
normal_df_bytes = pickle.dumps(df)
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
print("host name:", host, " socket name:", socket)
print("Waiting for Fog-node to connect...")
s.listen()
while True:
c, addr = s.accept()
print('Got connection from', addr, '...')
bytes = c.send(normal_df_bytes)
c.close() # Close the connection
客户端
import socket
import sys
HOST, PORT = "123.123.123.123", 12345
print(sys.argv[0:]);
data = " ".join(sys.argv[1:])
Create a socket
(SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((socket.gethostname(), 12345))
sock.sendall(bytes(data + "\n", "utf-8"))
# Receive data from the server and shut down
received = str(sock.recv(1024), "utf-8")
pickle.load(received)
finally:
sock.close()
print("Sent: {}".format(data))
print("Received: {}".format(received))
How can I send selected data frame To client from server. I have a data frame I select specific data frame from it . i got error on client side Error is (TypeError: file must have 'read' and 'readline' attributes) on line pickle.load(received)
Server Side
import socket
import pandas as pd
import pickle
df = pd.read_csv(r"C:\Users\DELL\OneDrive\Desktop\mythesisdataset.csv" ,engine='python',
names=[ 'SBP', 'DBP', 'HEARTRATE', "Temperature" ])
normal_df = (df [ (df.SBP > 120) & (df.DBP > 90) & (df.HEARTRATE < 100) & (df [ 'Temperature' ] < 100) ])
print(normal_df)
normal_df_bytes = pickle.dumps(df)
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
print("host name:", host, " socket name:", socket)
print("Waiting for Fog-node to connect...")
s.listen()
while True:
c, addr = s.accept()
print('Got connection from', addr, '...')
bytes = c.send(normal_df_bytes)
c.close() # Close the connection
Client side
import socket
import sys
HOST, PORT = "123.123.123.123", 12345
print(sys.argv[0:]);
data = " ".join(sys.argv[1:])
Create a socket
(SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((socket.gethostname(), 12345))
sock.sendall(bytes(data + "\n", "utf-8"))
# Receive data from the server and shut down
received = str(sock.recv(1024), "utf-8")
pickle.load(received)
finally:
sock.close()
print("Sent: {}".format(data))
print("Received: {}".format(received))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
pickle.load(received)
需要一个文件。使用pickle.loads(received),它需要字节
pickle.load(received)
expects a file. Usepickle.loads(received)
, which excpectsbytes