编程技术以减少文本文件大小

vip*_*per 2 python optimization file-io

我正在将多维数组数据写入文本文件.我这样做是明智的.文件的大小不断增长.我应该遵循哪些技术来获得输出文件的最小尺寸?

Jay*_*Jay 5

如果你的数组有很多零,你可以使用稀疏矩阵表示:而不是将整个矩阵写入文件,只写非零元素(当然,你需要逐个编写带有索引的每个元素).假设您要编写此矩阵:

0 0 0 2
1 0 0 0
0 0 0 0
0 0 3 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)

你可以把它写到文件中:

0 3 2
1 0 1
3 2 3
Run Code Online (Sandbox Code Playgroud)

在每一行中,第一个数字是行,第二个是列,第三个是存储的值.

如果您将文件写为文本,则可以切换为二进制格式:当您编写文本时,您将为每个数字使用一个字节; 在二进制文件中,每个数字使用固定数量的字节,并且不必表示空格和换行符:

100 200 300如果使用文本格式,将数字写入文件需要11个字节.但是如果你写三个16位整数,它们可能会用6个字节写入.在Python中,使用"wb"和"rb"模式打开二进制文件,然后将它们写为字节:

f = open('file', 'wb')
f.write('%c' % 123)
f.close()
Run Code Online (Sandbox Code Playgroud)

或 - 更有效率,

import array
f = open('file', 'wb')
data = array.array('B')
data.append(1)
data.append(2)
data.append(3)
data.tofile(f)
f.close()
Run Code Online (Sandbox Code Playgroud)

否则,您应该尝试使用标准技术压缩数据结构.由于您使用了标记您的问题python,您可能会对这些用于数据压缩的Python库感兴趣

还有一个很好的数据压缩介绍,理论方面有点重,如果你想了解更多.