我试图读取文件并在C#和IronPython中处理它,但我遇到了一个小问题。
当我用任何一种语言阅读文件时,我得到一个字节数组 几乎 相同但不完全。
例如,该数组有1552个字节。除了一件事,他们都是一样的。任何时候价值" 10"出现在Python实现中,值" 13"出现在C#实现中。除此之外,所有其他字节都是相同的。
这里大概是我为获取字节而做的事情:
的Python:
f = open('C:\myfile.blah')
contents = f.read()
bytes = bytearray(contents, 'cp1252')
C#:
var bytes = File.ReadAllBytes(@"C:\myfile.blah");
也许我选择了错误的编码?虽然我不这么认为,因为Python实现的行为与我期望的一样,并成功处理文件。
知道这里发生了什么吗?
答案 0 :(得分:1)
(我不知道python)但看起来你需要传递'rb'
标志:
open('C:\myfile.blah', 'rb')
在Windows上,附加到模式的'b'以二进制模式打开文件,所以 还有'rb','wb'和'r + b'等模式。 Windows上的Python 区分文本和二进制文件;行尾 文本文件中的字符会在数据时自动更改 读或写。
10
和13
提供了问题的线索:
Line feed
小数 10 ,小数点Carriage return
13 。