109 大型的csv檔案的處理方式

2021-10-02 17:20:24 字數 1959 閱讀 1663

httpresponse物件將會將響應的資料作為乙個整體返回,此時如果資料量非常大的話,長時間瀏覽器沒有得到伺服器的響應,就會超過預設的超時時間,返回超時。而streaminghttpresponse會將響應的資料作為乙個資料流返回給瀏覽器,這樣瀏覽器就可以接收到伺服器傳送過來的資料,不會因為長期沒有得到伺服器的回應而返回超時。這個類是專門用來處理流資料的,使得在處理一些大型檔案的時候,不會因為伺服器處理時間過長而連線超時。這個類並不是繼承httpresponse,而是繼承httpresponsebase,並且跟httpresponse對比有以下幾點區別:

(1)這個類沒有乙個屬性content,相反是streaming_content。

(2)這個類的streaming_content必須是乙個可以迭代的物件。

(3)這個類沒有write方法,如果給這個類的物件寫入資料將會報錯。

注意:streaminghttpresponse會啟動乙個程序類和客戶端保持長連線,所以會很消耗資源,所以如果不是特殊要求,盡量少用這種方法。

# 定義乙個類echo,實現write方法

class

echo

:def

write

(self, value)

:return value

deflarge_csv

(request)

:# 得到乙個streaminghttpresponse物件,並且設定檔案的型別為csv

# 因為streaminghttpresponse物件傳遞的第乙個引數必須是可以迭代的物件

# ()中使用for ... in ...進行遍歷,我們就可以得到乙個生成器一樣的物件,生成器並不會把資料一次性的返回

rows =

("row {},{}\n"

.format

(row,row)

for row in

range(0

,10000000))

# 使用format()函式將後面的(row,row)與字串中的{}進行替換

:# 初始化

-使用python內建的csv模組中的write(

)方法向response物件寫入資料-

->

writer = csv.writer(response)

for row in

range(0

,10000000):

writer.writerow(

['row {}'

.format

(row)

,'row'

.format

(row)])

return response

python學習心得(1) 大型檔案的讀取

我在部落格上發表一些我的python學習心得,希望對大家能有幫助。這一篇我們講述大型檔案python如何去讀取。當我們使用open函式取得乙個檔案物件之後,對這個檔案的所有操作都是通過這個控制代碼來實現的。讀取檔案的操作有三個 read 直接去讀位元組到字串中,可以指定size來讀取 readlin...

CSV檔案的轉義處理

csv檔案是一種適合程式格式化輸出資料的檔案格式。它使用英文逗號作為列分隔符,檔案可以直接用excel開啟。csv的規則簡單,便於程式輸出 excel對csv的相容性使得我們可以非常輕鬆的使用excel提供的所有強大功能。唯一需要注意的地方就是csv是使用英文逗號作為列分隔符的,所以當你輸出的文字中...

python對csv檔案的處理

在專案中prefix為mapeventmonster,surfix為csv。因此以questid 99070333為例,對應的csv檔名為 mapeventmonster 990703330.csvroomid rate enemygroupid action messageno 0 message...