我有一个包含以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);
}
但在Python中,Stream
和StreamReader
的概念合并为一个类。假设我有这样的代码:
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)?
编辑:我正在使用Python 3.5