如何让我的代码通过python服务器写入文本文件

时间:2017-01-23 21:13:26

标签: python python-3.x networking

客户代码:

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

任何答案都将不胜感激。

1 个答案:

答案 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部分中的第二个文件)。这可能不是一个好主意......