客户代码:
import socket
s = socket.socket()
host = '127.0.0.1'
port = 8081
s.connect((host, port))
s.send("Hello server!".encode('utf-8'))
with open('received_file.txt', 'w+') as f:
print('file opened')
while True:
print('receiving data...')
data = s.recv(1024)
print('data=%s' % data)
if not data:
break
else:
f = open('received_file.txt')
f.write(data)
f.close()
print('Successfully get the file')
s.close()
print('connection closed')
我收到以下错误:
TypeError: write() argument must be str, not bytes
任何答案都将不胜感激。
答案 0 :(得分:1)
两种方法:用二进制文件打开你的文件(注意文件模式中的'b'
)并写下bytes
:
with open('received_file.txt', 'wb') as f:
f.write(data)
在写入之前或将数据解码为str
:
with open('received_file.txt', 'w') as f:
f.write(data.decode('utf-8'))
如果您不使用utf-8
,请使用任何其他编码。
旁注:在您的代码中,您有两个名为f
的开放文件(else
部分中的第二个文件)。这可能不是一个好主意......