亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

直接從壓縮包中讀取,遍歷CSV文件

FrancisSoung / 3821人閱讀

摘要:最近這段時間遇到了一個問題,直接打開壓縮包文件后,用讀后,用進(jìn)行遍歷時,會提示。出問題的代碼是這樣的的英文縮寫是分析原因后,主要是因為讀進(jìn)來的內(nèi)容是類型,讀進(jìn)去的類型也是,造成無法遍歷。

最近這段時間遇到了一個問題,直接打開壓縮包文件后,用csv.reader讀后,用for in 進(jìn)行遍歷時,會提示:iterator should return strings not bytes (did you open the file in text mode ?)。出問題的代碼是這樣的:

import io
import zipfile
import csv

with zipfile.ZipFile("./12.zip") as zf:
    name = zf.namelist()[0]
    csvfile = zf.open(name)
    for x,y in csv.reader(csvfile):
        print(x,"的英文縮寫是:",y)

分析原因后,主要是因為 ZipFile 讀進(jìn)來的內(nèi)容是bytes類型,csv.reader讀進(jìn)去的類型也是bytes,造成無法遍歷。
想到的第一個辦法是用decode()進(jìn)行轉(zhuǎn)換,但csv.reader的參數(shù)應(yīng)該是一個文件流,而非字符串,需要用io.StringIO()進(jìn)行封裝。 有效的代碼如下:

with zipfile.ZipFile("./12.zip") as zf:
    name = zf.namelist()[0]
    csvfile = io.StringIO(zf.open(name).read().decode("gbk"))
    for x,y in csv.reader(csvfile):
        print(x,"的英文縮寫是:",y)

這樣問題就得以解決。

打開硬盤中的文件多數(shù)是采用流的方式進(jìn)行的,實際上在本例中,ZipFile實現(xiàn)了從硬盤到內(nèi)存的流操作,zf.open實現(xiàn)了從壓縮文件到csv文件的流操作,io.StringIO封裝了對字符串的流。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/41576.html

相關(guān)文章

  • Android 安全開發(fā)之 ZIP 文件目錄遍歷

    摘要:阿里聚安全的應(yīng)用漏洞掃描服務(wù),可以檢測出應(yīng)用的文件目錄遍歷風(fēng)險。阿里聚安全對開發(fā)者建議對重要的壓縮包文件進(jìn)行數(shù)字簽名校驗,校驗通過才進(jìn)行解壓。 1、ZIP文件目錄遍歷簡介 因為ZIP壓縮包文件中允許存在../的字符串,攻擊者可以利用多個../在解壓時改變ZIP包中某個文件的存放位置,覆蓋掉應(yīng)用原有的文件。如果被覆蓋掉的文件是動態(tài)鏈接so、dex或者odex文件,輕則產(chǎn)生本地拒絕服務(wù)漏洞...

    sorra 評論0 收藏0
  • Python 編程速成

    摘要:同時無論在哪種平臺上,都可以用進(jìn)行系統(tǒng)編程。這樣導(dǎo)入模塊并使用生成隨機(jī)數(shù)中的模塊提供了生成隨機(jī)數(shù)的函數(shù)。生成的隨機(jī)數(shù)介于和之間。可以從自己定義的范圍中生成一個隨機(jī)數(shù),如下所示操作日期和時間你可以從日期中提取所需的值,如下所示。 翻譯:瘋狂的技術(shù)宅https://likegeeks.com/python-... 本文首發(fā)微信公眾號:前端先鋒歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章 ...

    187J3X1 評論0 收藏0

發(fā)表評論

0條評論

FrancisSoung

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<