代码之家  ›  专栏  ›  技术社区  ›  Matthias

在python中读/写txt文件后,文件大小会发生变化

  •  2
  • Matthias  · 技术社区  · 7 年前

    在执行以下代码以使用Python生成文本文件的副本后 newfile.txt 文件大小与 oldfile.txt

    with open('oldfile.txt','r') as a, open('newfile.txt','w') as b:
        content = a.read()
        b.write(content)
    

    虽然 旧文件。txt文件 具有例如667 KB, 新建文件。txt文件 有681 KB。

    有人对此有什么解释吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Giacomo Catenazzi    7 年前

    原因有很多。

    您正在以文本文件的形式打开一个文件,因此文件的字节将被解释(解码)为python,然后再进行编码。所以可能会有变化。

    从…起 open 文件编制( https://docs.python.org/3/library/functions.html#open ):

    从流中读取输入时,如果换行符为None,则启用通用换行符模式。输入中的行可以以“\n”、“r”或“\r\n”结尾,这些行在返回给调用者之前会被转换为“\n”。

    因此,如果原始文件是ASCII码(例如,在Windows中生成),则 \r 已删除。但是在写回文件时,您不能再使用原始文件 \r (如果您使用的是Linux或MacOs)或者 \r\n ,如果您在Windows上(似乎是这样,因为您的文件大小增加了)。

    编码也可以改变文本。E、 g.可以删除(或添加)BOM标记,并可能删除(但如果不是隐式的),不需要的代码(您可以有一些Unicode的额外代码,这会改变附近代码的行为。可以添加其中的更多代码,但只有最后一个有效。

        2
  •  0
  •   r4r3devAut    7 年前

    我尝试了Linux/Ubuntu。正如预期的那样,两个文件的文件大小完全相同。

    此时,我想这种行为与python无关,可能取决于您的文件系统(压缩)或操作系统。