109.大型的csv文件的处理方式

HttpResponse对象将会将响应的数据作为一个整体返回,此时如果数据量非常大的话,长时间浏览器没有得到服务器的响应,就会超过默认的超时时间,返回超时。而StreamingHttpResponse会将响应的数据作为一个数据流返回给浏览器,这样浏览器就可以接收到服务器发送过来的数据,不会因为长期没有得到服务器的回应而返回超时。

StreamingHttpResponse:

这个类是专门用来处理流数据的,使得在处理一些大型文件的时候,不会因为服务器处理时间过长而连接超时。这个类并不是继承HttpResponse,而是继承HttpResponseBase,并且跟HttpResponse对比有以下几点区别:

(1)这个类没有一个属性content,相反是streaming_content。
(2)这个类的streaming_content必须是一个可以迭代的对象。
(3)这个类没有write方法,如果给这个类的对象写入数据将会报错。
注意:StreamingHttpResponse会启动一个进程类和客户端保持长连接,所以会很消耗资源,所以如果不是特殊要求,尽量少用这种方法。
==1.使用StreamingHttpResponse生成大型csv文件并且下载,在浏览器中进行访问的时候,要注意观察浏览器的左下角的加载,或者说是进行安全连接的时间以及下载的时间,示例代码如下:==
from django.http import HttpResponse, StreamingHttpResponse
from django.template import loader

# 定义一个类Echo,实现write方法
class Echo:
    def write(self, value):
        return value

def large_csv(request):
# 得到一个StreamingHttpResponse对象,并且设置文件的类型为csv
    response = StreamingHttpResponse(content_type='text/csv')
    # 不显示文件的内容,只是可以进行下载,并且设置文件的名字
    response['Content-Disposition'] = "attachment; filename=large_csv.csv"
# 因为StreamingHttpResponse对象传递的第一个参数必须是可以迭代的对象
    # ()中使用for ... in ...进行遍历,我们就可以得到一个生成器一样的对象,生成器并不会把数据一次性的返回
    rows = ("row {},{}\n".format(row,row) for row in range(0,10000000))
    # 使用format()函数将后面的(row,row)与字符串中的{}进行替换
    response.streaming_content = rows
    return response
==2.使用HttpResponse获取大型的csv文件并进行下载,一定要注意观察浏览器左下角文件在加载是的安全连接时间以及下载的时间,示例代码如下:==
from django.http import HttpResponse
import csv

def large_view(request):
    # 初始化
    response = HttpResponse(content_type='text/csv')
    # 指定文件不显示文件内容,可以作为附件进行下载,并且指定文件名
    response['Content-Disposition'] = "attachment; filename=large_csc.csv"

    <!--使用python内置的csv模块中的write()方法向response对象写入数据-->
    writer = csv.writer(response)
    for row in range(0,10000000):
        writer.writerow(['row {}'.format(row),'row'.format(row)])
    return response

原文地址:https://www.cnblogs.com/guyan-2020/p/12293299.html

时间: 2024-08-09 08:39:55

109.大型的csv文件的处理方式的相关文章

109:大型CSV文件的处理方式

生成大的CSV文件: 108是生成的一个小的csv文件,如果想要生成大型的csv文件,那么以上方式将有可能会发生超时的情况(服务器要生成一个大型csv文件,需要的时间可能会超过浏览器默认的超时时间).这时候我们可以借助另外一个类,叫做StreamingHttpResponse对象,这个对象是将响应的数据作为一个流返回给客户端,而不是作为一个整体返回.示例代码如下:from django.http import HttpResponse, JsonResponse, StreamingHttpRe

django生成CSV文件

生成CSV和Excel文件:有时候我们做的网站,需要将一些数据导出到文件中以方便统计,在导出文件类型中生成CSV文件或者是Excel文件是常用的方式,导出的CSV文件或者Excel文件将以附件的方式下载下来,以下将讲解如何生成CSV文件. 生成小的CSV文件:我们用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去,首先来介绍一下把数据写入到CSV文件的一种方法: import csv with open('abc.csv') as fp: wr

es实战之数据导出成csv文件

从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过65536, excel2007及以上版本支持1048576条数据.excel支持的数据量有限,并且生生成文件的速度比较慢. csv具有支持写入量大,文件较小的优点. 故选择csv作为导出文件类型. 导出文件的几种方式: 将数据从es中查询出来,在这个大前提下,对比导出文件的速度. 由前端处理 直接将数据返回给前端,

Pandas 基础(4) - 读/写 Excel 和 CSV 文件

这一节将分别介绍读/写 Excel 和 CSV 文件的各种方式: - 读入 CSV 文件 首先是准备一个 csv 文件, 这里我用的是 stock_data.csv, 文件我已上传, 大家可以直接下载下来使用. 正如前面讲过的, csv 文件可以放在 jupyter notebook 同目录下, 这样直接写文件名就可以了, 但是如果没有放在同目录下, 就需要写绝对路径, 否则读取不到. import pandas as pd df = pd.read_csv('/Users/rachel/Sit

使用pandas处理大型CSV文件

# -*- coding:utf-8 -*- ''' CSV 常用API 1)reader(csvfile[, dialect='excel'][, fmtparam]),主要用于CSV 文件的读取,返回一个 reader 对象用于在CSV 文件内容上进行行迭代. 参数: csvfile,需要是支持迭代(Iterator)的对象,通常对文件(file)对象或者列表(list)对象都是适用的,并且每次调用next() 方法的返回值是字符串(string): dialect 的默认值为excel,与

POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解

http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280.html . Office2007与Office Open XML 在Office 2007之前,Office一直都是以二进制位的方式存储,但这种格式不易被其它软件拿来使用,在各界的压力下,MicroSoft于2005年发布了基于XML的ooxml开放文档标准.ooxml的xml schema强调减

PLSQL_PLSQL读写CSV文件方式(案例)

2012-01-06 Created By BaoXinjin 一.摘要 读写CSV的方式 1. 写CSV Step1. 创建测试目录 Step2. 写CSV文件 Step3. 查看CSV文件 2. 读CSV Step1. 创建测试表 Step2. 读CSV文件 Step3. 查看表 二.写CSV文件 Step1. 创建测试目录 --创建测试目录 CREATE OR REPLACE DIRECTORY bxjcsv AS '/home/oracle/bxjcsv'; --目录权限分配 GRANT

CSV文件在Python中的几种处理方式

Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型.在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文本的方式存储数据表.今天,我将给大家分享在Python中如何操作CSV文件. 一.数据源 首先,我们来看看本次操作的数据源,图1 CSV文件是在Excel中打开的,图2 CSV文件是在Notepad++中打开的,我们在图2中可以看到数值之间是以逗号分隔开的,每行末尾是CR回车符和LF换行符(请注意,

解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG

解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG [email protected] http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-6-6 方法一: 出处:http://blog.csdn.net/leonzhouwei/article/details/8447643 直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码. 原因是 Excel 以 ANSI 格式打开,不会做编码识别. 打开 UTF-8 编