Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将xml转换为csv后关闭文件_Python_Xml_Csv - Fatal编程技术网

Python 将xml转换为csv后关闭文件

Python 将xml转换为csv后关闭文件,python,xml,csv,Python,Xml,Csv,这是我的小脚本(这是xmltocsv模块的基本用法),用于将xml文件(7Mo)转换为csv 我有一个小问题,因为这个转换器xml2csv使用,直到我结束脚本(关闭我的shell)后才关闭文件,这导致了一些问题,因为我使用新的csv(在同一个脚本中)进行一些处理,但由于它没有完全写入磁盘,一些数据被遗忘 当我手动结束脚本时,我在磁盘上看到文件大小改变了1ko。你能告诉我怎样才能把文件完整地写在磁盘上吗。。。例如,通过转换器刷新所有数据进程 #!/usr/bin/env python # -*-

这是我的小脚本(这是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
我试图用“with open”打开它,然后关闭它,但它也不起作用

谢谢你的帮助。

两点:

  • 调用
    close
    方法时忘记了
    ()

  • 如果使用
    with
    关键字
    打开
    文件,则无需在
    with
    块之后手动关闭它。Python将确保在不再需要资源时关闭该资源,即使发生异常


  • 如果您使用的是来自knadh xmlutils的xmd2csv,那么它似乎永远不会关闭输出csv文件

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

    converter.output.close()
    

    with块为您关闭文件是的,谢谢,我只是忘了从脚本中删除它。但是即使你这样做了,它也不会在你的磁盘上写入完整的文件,总是1ko丢失嗨,谢谢timgeb,我忘了从脚本中删除close方法。实际上,即使你使用关键字也不起作用,csv上总是缺少一些数据。由于serge,转换后的xml大约有70万份!我离你不远,我在你的答案转换器之前做了一个测试。close()但我对对象编程还不够好:)