确定内存中文件的方向

时间:2017-06-09 18:12:01

标签: python file io bit-manipulation

说我想处理CSV文件。我知道在Python中我可以调用read()函数打开文件并一次读取一个字节,从文件中的第一个字段(即文件左上角的字段)到最后一个字段字段(右下角的字段)。

我的问题是如何确定内存中文件的方向。也就是说,如果我将文件的内容视为单个二进制数并将其作为位流处理,我怎么知道第一个字段(read()首先返回给我们的字段)是否存储在二进制数或最重要位置的重要位置?这取决于我的程序运行的机器的字节顺序吗?

这是一个(人为的)实例,这种区别很重要。假设我首先扫描文件的二进制表示,从最不重要的位置到最重要的位置,以确定每个CSV值的宽度。如果我然后调用read(),我计算的第一个字段宽度将对应于第一个字段read()返回当且仅当CSV文件的第一个字段存储在最低有效位位置时我们将文件视为单个二进制数。如果第一个字段存储在最重要的位置,我首先必须反转我的计算字段宽度列表才能使用它。

这是一个更具体的例子:

CSV文件:abc,12345

扫描的字段宽度:[3, 5][5, 3],具体取决于CSV文件在内存中的布局方式。

现在,如果我致电read(),我将处理的第一个字段为abc。如果abc恰好是我在计算字段宽度时扫描的第一个字段,那我很好。我知道我在阅读3个字符后扫描了整个第一个字段。但是,如果我在计算字段宽度时首先扫描12345,我就遇到了问题。

如何确定文件在内存中的布局方式?文件的第一个字段是存储在最低有效位位置还是最高有效位位置?

1 个答案:

答案 0 :(得分:1)

Endiannes是二进制文件的问题。 CSV文件是文本文件。这些数字不是二进制数字,而是ASCII字符。其中没有endiannes。