2016-07-07 77 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