国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

FrancisSoung / 3774人閱讀

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

最近這段時間遇到了一個問題,直接打開壓縮包文件后,用csv.reader讀后,用for in 進行遍歷時,會提示: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 讀進來的內容是bytes類型,csv.reader讀進去的類型也是bytes,造成無法遍歷。
想到的第一個辦法是用decode()進行轉換,但csv.reader的參數應該是一個文件流,而非字符串,需要用io.StringIO()進行封裝。 有效的代碼如下:

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)

這樣問題就得以解決。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41576.html

相關文章

  • Android 安全開發之 ZIP 文件目錄遍歷

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

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

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

    187J3X1 評論0 收藏0

發表評論

0條評論

FrancisSoung

|高級講師

TA的文章

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