在Python中打开文件:字节数组转换为字符串?

在Python中打开文件:字节数组转换为字符串?,python,tcp,pipe,bytearray,Python,Tcp,Pipe,Bytearray,我有一个包含以下数据的文本文件: b'\x00\x09\x00\xfe' 这是通过管道从TCP套接字流传输到文本文件中的。将此文本文件称为“stream.txt”。我使用以下代码打开了此文件: f = open("stream.txt", "rb") bytes_read = f.read() 当我在另一个Python脚本中打开此文件时,原始文件中的每个'\'都会得到一个'\'。除此之外,我无法访问字节数组本身,因为它似乎已成为字符串。也就是说,“bytes_read”现在是 'b"\\x0

我有一个包含以下数据的文本文件:

b'\x00\x09\x00\xfe'
这是通过管道从TCP套接字流传输到文本文件中的。将此文本文件称为“stream.txt”。我使用以下代码打开了此文件:

f = open("stream.txt", "rb")
bytes_read = f.read()
当我在另一个Python脚本中打开此文件时,原始文件中的每个'\'都会得到一个'\'。除此之外,我无法访问字节数组本身,因为它似乎已成为字符串。也就是说,“bytes_read”现在是

'b"\\x00\\x09\\x00\\xfe"'
如何将此字符串恢复为字节数组

我用于捕获此数据的客户端代码是以下脚本:

from socket import *

clientsock = socket(AF_INET, SOCK_STREAM)
clientsock.connect(('1.2.3.4', 2000))      # Open the TCP socket

clientsock.sendall(b'myCommand')  # Send a command to the server
data = clientsock.recv(16)        # Wait for the response
print(data)                       # For piping to 'stream.txt'
clientsock.close()
当数据打印到终端时,我将其重定向到一个文件:

$ python3 client.py > stream.txt

我的目标是绕过重定向到文本文件和管道直接进入绘图仪。。。但首先我想让它工作。

能够通过直接写入文件来解决这个问题。因此,我没有使用“打印(数据)”并重定向到文件,而是尝试了以下方法:

file = open("rawData", "wb")
...
file.write(data)
...
file.close()

能够按预期处理“rawData”。

bytes\u read=f.read()之后您做了什么?我不太明白。它不知从哪里变成了字符串?你的问题是,Python在处理文件时,会在你认为处理错误的地方正确地处理文件。您的文件不是文本,而是二进制数据。未经加工的你不应该试图把它写成文字。您告诉python以
rb
(读取,二进制)模式打开文件,这是正确的。。。除非我在某个地方这么做了?是否有其他方法捕获该数据(例如,不使用来自终端的重定向)?