Python - 减小文件大小的程序正在增加文件大小

时间:2016-04-18 16:05:23

标签: python

对于大学,我正在研究压缩技术。我试图执行的一项实验是用一个字符替换某些威尔士语字母(有向图)。

我认为用一个字符替换两个字符会减小文件大小(无论多少),或者最坏的情况是保持文件大小不变。我已经制作了一个Python脚本来实现这一点,但实际上它增加了文件大小。我测试过的原始文件是~74,400KB,输出程序是~74,700KB。

这是我的Python代码:

replacements = {
        'ch':'ƒ',
        'Ch':'†',
        'CH':'‡',
        'dd':'Œ',
        'Dd':'•',
        'DD':'œ',
        'ff':'¤',
        'Ff':'¦',
        'FF':'§',
        'ng':'±',
        'Ng':'µ',
        'NG':'¶',
        'll':'º',
        'Ll':'¿',
        'LL':'Æ',
        'ph':'Ç',
        'Ph':'Ð',
        'PH':'×',
        'rh':'Ø',
        'Rh':'Þ',
        'RH':'ß',
        'th':'æ',
        'Th':'ç',
        'TH':'ð',
        }
print("Input file location: ")
inLoc = input("> ")
print("Output file location: ")
outLoc = input("> ")

with open(inLoc, "r",encoding="Latin-1") as infile, open(outLoc, "w", encoding="utf-8") as outfile:
for line in infile:
    for src, target in replacements.items():
        line = line.replace(src, target)
    outfile.write(line)

当我在一个非常小的文本文件上测试它几行时,我查看了输出,它是预期的。

INPUT.TXT:

Lle wyt ti heddiw?

Ddoe es i at gogledd Nghymru.

Output.txt的:

¿e wyt ti heŒiw?

•oe es i at gogleŒ µhymru.

有人可以解释发生了什么吗?

2 个答案:

答案 0 :(得分:7)

您正在更改文件的编码。 latin-1每个字符总是1个字节,但utf-8不是,所以你的一些特殊字符用多个字节编码,导致大小增加。

答案 1 :(得分:0)

“”UTF-8对任何ASCII字符使用一个字节,所有ASCII字符在UTF-8和ASCII编码中都具有相同的代码值,对于其他字符最多包含四个字节。“” - https://en.wikipedia.org/wiki/Unicode