我正在创建一个脚本,将大量数据转换为CSV格式。它使用mapreduce API在Google AppEngine上运行,这只是因为它意味着每一行数据都是在回调函数中单独格式化和输出的。
我想利用csv
模块中已存在的逻辑将我的数据转换为正确的格式,但由于CSV编写器需要类似文件的对象,因此我必须实例化每行StringIO
,将行写入对象,然后每次返回对象的内容。
这看起来很愚蠢,我想知道是否有办法在没有书写部分的情况下访问csv
模块的内部CSV格式化逻辑。
答案 0 :(得分:3)
csv模块包装_csv模块,它是用C语言编写的。你可以获取它的源代码并将其修改为不需要类似文件的对象,但是在模块中戳,我看不清楚没有重新编译的方法。
答案 1 :(得分:3)
一个选项可能是拥有自己的“类文件”对象。实际上,cvs.writer
要求对象只有write
方法,所以:
class PseudoFile(object):
def write(self, string):
# Do whatever with your string
csv.writer(PseudoFile()).writerow(row)
你在那里跳过几步,但也许这就是你想要的。