写入.txt和.xlsx格式时输出文件大小的差异

时间:2018-11-10 19:59:03

标签: python pandas

我尝试将800个JSON响应保存到.txt文件以及Excel文件中。

对于txt,我正在使用:

for activity_id in activity_ids:
        activity_details = requests.get(url, params=activity_id).text
        with open('test.txt','a') as f:
            f.write(activity_details + '\n')

对于JSON:

def df_to_excel(df, filename):
    writer = pandas.ExcelWriter(filename)
    df.to_excel(writer, 'Sheet1')
    writer.save()

for activity_id in activity_ids:
    activity_details = requests.get(url, params=activity_id).json()  
    df = json_normalize(j)
    df_to_excel(df, 'test.xlsx')

为什么输出文件大小存在巨大差异:Excel文件为6.5 Mb,txt文件为30 Mb?如果有的话,我希望Excel文件更大。 有什么办法可以缩小txt输出文件?

2 个答案:

答案 0 :(得分:2)

Excel文档(.xlsx)是包含xml文件的zip文件。您看到的尺寸差异是压缩过程中压缩的结果。

答案 1 :(得分:0)

正在以附加模式打开文本文件。如果您没有在代码开始时清除它,它将在每次运行代码时不断积累大量多余的文本。此外,您正在针对文本文件中的每个活动ID编写响应,而您似乎正在excel中覆盖工作表1,因此excel仅存储最后一个活动ID信息。

编辑:是的,正如@Michael所说,excel文件确实存储压缩数据,并且比纯文本文件小。