将xml转换为csv后关闭文件

时间:2014-06-04 10:03:52

标签: python xml csv

这是我的小脚本(基本上只是模块xmltocsv的基本用法)代码,以便将xml文件转换为(7Mo)到csv。

我有一个小问题,因为这个转换器xml2csv使用,直到我结束脚本(关闭我的shell)才关闭文件,因为我使用新的csv(在同一个脚本中)导致我出现问题做一些过程,但由于它没有完全写在磁盘上,一些数据被遗忘。

当我手动结束脚本时,我在磁盘上看到文件大小改变了1ko。你能告诉我怎样才能完全把文件写在磁盘上......就像刷新转换器的所有数据一样。

#!/usr/bin/env python
# -*- coding: UTF8 -*-
import csv
from xmlutils.xml2csv import xml2csv
import datetime
import time

#Declaration du jour

jour = datetime.date.today()

#Conversion du fichier xml en CSV

inputFile = "../source_xml/source-2014-06-03.xml"
output = "../source_csv/drop"+str(jour)+".csv"

converter = xml2csv(inputFile, output , encoding="utf-8")
converter.convert(tag="product",delimiter="|")

with open("../source_csv/drop"+str(jour)+".csv", 'r+') as output:
    read_data = output.read()
output.close

我尝试用“打开”打开它并关闭它但它也不起作用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

两点:

  1. 您在调用()方法时忘记了close

  2. 如果您使用open关键字with文件,则无需在with数据块后手动关闭它。 Python将确保资源在不再需要时关闭,即使发生异常也是如此。

  3. documentation

答案 1 :(得分:1)

如果您正在使用knadh-xmlutils中的xmd2csv,那么它似乎永远不会关闭输出csv文件。

因此,您应首先在xml2csv的python代码中验证输出文件是以self.output打开,而不是像我所知的那样关闭。如果是这种情况,您应该按照converter.convert(...)

converter.output.close()