OpenERP 7 : 我怎样才能打开一个解码文件作为 CSV 文件?
OpenERP 7 : How can I open a decoded file as a CSV file?
我有一个模块要求用户提供一个带有二进制字段的 csv 文件。因此,一旦模块拥有它,我就对其进行解码并将结果写入临时文件,但随后我无法将其作为 CSV 文件打开:我将收到错误 "TypeError: coercing to Unicode: need string or buffer, file found",因为我正在尝试打开一个文件对象。那么如何解码文件然后将其作为 CSV 文件打开?
这是我的代码:
# -*- coding: utf-8 -*-
from osv import fields, osv
import csv
import base64
from tempfile import TemporaryFile
class set_dates(osv.osv_memory):
_name = "set.dates"
_columns = {
"donnees": fields.binary("Données", required=True)
}
def do_set(self, cr, uid, ids, data, context=None):
this = self.browse(cr, uid, ids[0])
fileobj = TemporaryFile('w+')
fileobj.write(base64.decodestring(this.donnees))
fic = csv.reader(open(fileobj, "rb"))
tab = list(fic)
#...
在此先感谢您的帮助!
错误在行fic = csv.reader(open(fileobj, "rb"))
open()
抱怨它的参数是文件对象,而不是字符串或缓冲区。那是因为变量 fileobj
是一个 file
对象,它是用以下方式打开的:
fileobj = TemporaryFile('w+')
您只需更换:
fic = csv.reader(open(fileobj, "rb"))
有:
fic = csv.reader(fileobj)
我有一个模块要求用户提供一个带有二进制字段的 csv 文件。因此,一旦模块拥有它,我就对其进行解码并将结果写入临时文件,但随后我无法将其作为 CSV 文件打开:我将收到错误 "TypeError: coercing to Unicode: need string or buffer, file found",因为我正在尝试打开一个文件对象。那么如何解码文件然后将其作为 CSV 文件打开?
这是我的代码:
# -*- coding: utf-8 -*-
from osv import fields, osv
import csv
import base64
from tempfile import TemporaryFile
class set_dates(osv.osv_memory):
_name = "set.dates"
_columns = {
"donnees": fields.binary("Données", required=True)
}
def do_set(self, cr, uid, ids, data, context=None):
this = self.browse(cr, uid, ids[0])
fileobj = TemporaryFile('w+')
fileobj.write(base64.decodestring(this.donnees))
fic = csv.reader(open(fileobj, "rb"))
tab = list(fic)
#...
在此先感谢您的帮助!
错误在行fic = csv.reader(open(fileobj, "rb"))
open()
抱怨它的参数是文件对象,而不是字符串或缓冲区。那是因为变量 fileobj
是一个 file
对象,它是用以下方式打开的:
fileobj = TemporaryFile('w+')
您只需更换:
fic = csv.reader(open(fileobj, "rb"))
有:
fic = csv.reader(fileobj)