2016-07-07 75 views
0

我的程序讀取一個csv文件,但最近輸入文件被更改爲base64編碼。所以,目前的讀代碼:python過濾輸入到csv.reader

with open(uploadFile, 'rb') as csvfile: 
    spreadSheet = csv.reader(csvfile, delimiter=',') 

我知道CSV是一個文件描述符,這不能做,但我想要做的事,如:

import base64 
with open(uploadFile, 'rb') as csvfile: 
    spreadSheet = csv.reader(bas64.decode(csvfile), delimiter=',') 

也就是說文件輸入將被base64解碼,就像在一個管道中,然後解析爲一個csv文件。

我可以讀取文件解碼它寫回到另一個文件,然後用csv閱讀器讀取該文件,但似乎應該有一種方法來做它的管道序列。

回答

0

請嘗試以下

import base64 
import csv 

with open(uploadFile, 'rb') as csvfile: 
    decoded = base64.standard_b64decode(csvfile.read()).decode('utf-8') 
    spreadSheet = csv.reader(decoded.splitlines(), delimiter=',') 
+0

解碼的字符串(類型的Unicode)我認爲csv.reader的第一個參數必須是一個文件名?我在尋找的是一種將輸入文件描述符通過過濾器(base64)運行其輸出的方法,然後從其輸出創建另一個文件描述符。好處是你可以使用這個描述符來說打開微軟電子表格,用xlrd – Keir

+0

也許像popen這樣的東西? – Keir