Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python写入文件会使用不必要的存储吗?_Python_Python 3.x - Fatal编程技术网

Python写入文件会使用不必要的存储吗?

Python写入文件会使用不必要的存储吗?,python,python-3.x,Python,Python 3.x,在我的笔记本电脑上,我得到了一个字符串列表中的tabualr数据,列表中约有5万项。 列表中的每个项目都是一个字符串,包含制表符分隔的值(.tsv)。 我使用以下python代码将这些值写入tsv文件: with open("path/to/file.tsv", 'w') as file: file.writelines(my_list_of_strings) 创建的文件大小超过10000 KB。 现在,当我在Excel中打开文件并进行一些小的手动更改时,比如删除一行,甚至添加新行,

在我的笔记本电脑上,我得到了一个字符串列表中的tabualr数据,列表中约有5万项。 列表中的每个项目都是一个字符串,包含制表符分隔的值(.tsv)。 我使用以下python代码将这些值写入tsv文件:

 with open("path/to/file.tsv", 'w') as file:
    file.writelines(my_list_of_strings)
创建的文件大小超过10000 KB。 现在,当我在Excel中打开文件并进行一些小的手动更改时,比如删除一行,甚至添加新行,保存文件时,我注意到文件的大小要小得多。 现在tsv文件的大小约为7000 KB

为什么呢

我还尝试遍历列表,并对每个项目使用
write()
,而不是
writelines()
。另外,我尝试了逗号分隔的值,并将文件保存为csv而不是tsv。同样的事情也发生了

字符串的
my\u list\u中的每一项看起来都像这样:


'-1.0000000e+00\t1.0002500e+03\t-1.0000000e+00\t5.3894500e+01\t2.7119400e+01\t-8.8790900e+00\t-4.5719900e+01\t1.0045900e+01\t1.1052600e+00\t-3.3619700e-01\t9.9792500e+00\t4.5077500e+01\t1.8811800e-01\t-01\t-4.40537e+12\t815p>最有可能是因为使用excel编码来保存数据。尝试通过python脚本创建文件,在excel中打开并再次保存,而不更改其中的任何数据。查看文件大小是否更改。

您是否使用了任何类型的差异/增量工具来查看实际更改的内容?问题大概出在字符串的
my\u list\u
的内容中的某个地方(如果文件的编码配置不是问题——如果文件是UTF-16,Excel重新保存为UTF-8,那么这就是您的不同之处),您还没有向我们展示它是如何生成的/包含什么内容。您应该在一个好的文本编辑器、diff工具或*ix上的命令行
less
工具中检查before/after文件。Excel可能会应用不同的编码,将空格替换为制表符或类似内容。是否可能是通过python编写unicode,但excel以某种方式将文件保存为ascii或其他格式?@DaeMoohn,…*哪个*unicode编码是问题所在--最常见的(ascii可打印)字符将在UTF-8中写入一个字节,而在UTF-16中写入两个字节,UTF-32中的四个字节…通过Excel辅助数字的重新格式化。样本行中的第一个数字是
-1.0000000 e+00
,如果您不介意精度损失,可以将其写成
-1