摘要:最近這段時間遇到了一個問題,直接打開壓縮包文件后,用讀后,用進行遍歷時,會提示。出問題的代碼是這樣的的英文縮寫是分析原因后,主要是因為讀進來的內容是類型,讀進去的類型也是,造成無法遍歷。
最近這段時間遇到了一個問題,直接打開壓縮包文件后,用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
摘要:阿里聚安全的應用漏洞掃描服務,可以檢測出應用的文件目錄遍歷風險。阿里聚安全對開發者建議對重要的壓縮包文件進行數字簽名校驗,校驗通過才進行解壓。 1、ZIP文件目錄遍歷簡介 因為ZIP壓縮包文件中允許存在../的字符串,攻擊者可以利用多個../在解壓時改變ZIP包中某個文件的存放位置,覆蓋掉應用原有的文件。如果被覆蓋掉的文件是動態鏈接so、dex或者odex文件,輕則產生本地拒絕服務漏洞...
摘要:同時無論在哪種平臺上,都可以用進行系統編程。這樣導入模塊并使用生成隨機數中的模塊提供了生成隨機數的函數。生成的隨機數介于和之間。可以從自己定義的范圍中生成一個隨機數,如下所示操作日期和時間你可以從日期中提取所需的值,如下所示。 翻譯:瘋狂的技術宅https://likegeeks.com/python-... 本文首發微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 ...
閱讀 3081·2019-08-30 15:56
閱讀 1238·2019-08-29 15:20
閱讀 1577·2019-08-29 13:19
閱讀 1480·2019-08-29 13:10
閱讀 3387·2019-08-26 18:27
閱讀 3073·2019-08-26 11:46
閱讀 2237·2019-08-26 11:45
閱讀 3765·2019-08-26 10:12