我在python中使用LZW算法编码一个简单的文本文件。但是,我意识到我只能使用write()函数将一个字符串写入.txt
文件,该函数本身占用的空间几乎一样多。那么有可能以某种方式将实际整数写入文件(可能采用不同的格式),
实现适当的压缩?
readfile = open("C:/Users/Dhruv/Desktop/read.txt", "r")
writefile = open("C:/Users/Dhruv/Desktop/write.txt", "w")
content = readfile.read()
length = len(content)
codes = []
for i in range(0, 256) :
codes.append(str(chr(i)))
current_string = ""
for i in range(0, length) :
temp = current_string + content[i]
print(temp)
if temp in codes :
current_string += content[i]
else :
codes.append(current_string + content[i])
writefile.write(str(codes.index(current_string)) + " ")
current_string = str(content[i])
writefile.write(str(codes.index(current_string)) + " ")
readfile.close()
writefile.close();
答案 0 :(得分:1)
如果您的数据可以表示为Numpy数组,则以下函数可以在.txt文件中将其写为整数:
import numpy as np
def writer(_hd, _data):
out_file_name = str(_hd) + '.csv'
np.savetxt(out_file_name, _data, fmt='%i')
return None
其中_hd是文件名,_data是numpy数组。 fmt ='%i'将数据保存为整数;其他选项也可用here。