Python - 写入以二进制模式打开的文件时出错

时间:2017-03-09 23:36:55

标签: python file networking server client

我正在尝试编写一个服务器 - 客户端程序,其中客户端从以二进制模式打开的文件中读取,然后将其发送到服务器,该服务器将数据以二进制模式('wb +')写入另一个文件。

发生错误的代码的主要部分是:

print(fileData)
newFile.write(fileData)

这个输出是:

b'Hello World!\n'
Traceback (most recent call last):

  File "ftps.py", line 37, in <module>

    newFile.write(fileData)

TypeError: a bytes-like object is required, not 'str'

现在我想我明白错误是什么。 b'Hello World!\ n'是字符串类型,在我将其写入文件之前必须是二进制格式。所以我尝试使用fileData [2:-1] .encode('utf-8')将其转换为二进制对象,但它仍然不允许我写入文本文件。 (错误不再显示,但没有任何内容写入文件。还有其他方法可以做到这一点,还是我在正确的路径上(尝试将字符串转换为二进制对象?)。谢谢!

编辑:很抱歉第一次不清楚,但我没有特别需要写“hello world”字符串,但只是作为一个例子。实际代码在while循环中有这两行,并保持打印不同的字符串。我正在使用Python 3!

1 个答案:

答案 0 :(得分:0)

.encode('utf-8')不会创建二进制对象。

好像你没有转换“Hello World!”到二进制。 试试这个:

>>> st = "Hello World!"
>>> map(bin, bytearray(st))
['0b1001000', '0b1100101', '0b1101100', '0b1101100', '0b1101111', '0b100000', '0b1010111', '0b1101111', '0b1110010', '0b1101100', '0b1100100', '0b100001']

您应该能够将结果写入您的文件。