Python 强制流读取二进制数据/特定编码中的数据

Python 强制流读取二进制数据/特定编码中的数据,python,stream,Python,Stream,我有一个数据流,其中包含用windows-1251编码的数据。在C#中,我可以很容易地从流中读取一些数据,如下所示: private static void ReadStream(Stream stream) { using (var streamReader = new StreamReader(stream, Encoding.GetEncoding(1251), true, 1024, true) { // read from stream } }

我有一个数据流,其中包含用windows-1251编码的数据。在C#中,我可以很容易地从流中读取一些数据,如下所示:

private static void ReadStream(Stream stream)
{
    using (var streamReader = new StreamReader(stream, Encoding.GetEncoding(1251), true, 1024, true)
    {
        // read from stream
    }
}

// usage
using (var fileStream = File.OpenRead(@"C:\test.txt"))
{
    ReadStream(fileStream);
}
def read_stream(stream):
    # read from stream
    pass

# usage
with open(r'C:\test.txt') as file_stream:
    read_stream(file_stream)
但是在Python中,
Stream
StreamReader
的概念被合并到一个类中。假设我有这样一个代码:

private static void ReadStream(Stream stream)
{
    using (var streamReader = new StreamReader(stream, Encoding.GetEncoding(1251), true, 1024, true)
    {
        // read from stream
    }
}

// usage
using (var fileStream = File.OpenRead(@"C:\test.txt"))
{
    ReadStream(fileStream);
}
def read_stream(stream):
    # read from stream
    pass

# usage
with open(r'C:\test.txt') as file_stream:
    read_stream(file_stream)
如果我在一个
read_stream
函数中,我不知道流是以二进制模式还是文本模式打开的(在后面的例子中使用哪种编码)。有没有办法用我想要的编码“重新打开”流(windows-1251)


编辑:我正在使用Python3.5

您使用的是Python2.x还是3.x?这里的差异很重要。@Wuff我使用的是Python 3.5