在Python中读/写txt文件后文件大小发生变化

问题描述 投票:0回答:2

执行以下代码以使用 Python 生成文本文件的副本后,

newfile.txt
的文件大小与
oldfile.txt
不完全相同。

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

虽然

oldfile.txt
有例如667 KB,
newfile.txt
有 681 KB。

有人能解释一下吗?

python filesize read-write
2个回答
1
投票

原因有多种。

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

来自

open
文档(https://docs.python.org/3/library/functions.html#open):

从流中读取输入时,如果换行符为 None,则启用通用换行符模式。输入中的行可以以 ' 结尾 ',' ', 或者 ' ',这些被翻译成' ' 在返回给呼叫者之前。

因此,如果原始文件是 ASCII(例如在 Windows 中生成),您将删除

\r
。但是,当写回文件时,您将不再拥有原始的
\r
(如果您使用的是Linux或MacO),或者您将始终拥有
\r\n
,如果您使用的是Windows(似乎是这样,因为您的文件增加了尺寸)。

编码也可能会改变文本。例如。 BOM 标记可以被删除(或添加),并且有可能(但据我所知,这不是隐式完成的),不需要的代码可以被删除(您可以在 Unicode 中添加一些额外的代码,这会改变附近代码的行为。可以添加更多的其中之一,但只有最后一个有效。


0
投票

我在 Linux / Ubuntu 上尝试过。它按预期工作;两个文件的文件大小完全相等。

此时,我猜这个行为与Python无关;也许这取决于您的文件系统(压缩)或操作系统。

© www.soinside.com 2019 - 2024. All rights reserved.