将所有XML文件转换为python文件夹中的JSON文件?

时间:2018-10-25 19:29:34

标签: python json xml

我有一个包含1000个XML文件的文件夹。现在,我想读取每个xml文件并为相应的xml文件创建一个json文件,而不删除xml文件。

例如::如果我有一个名为abc.xml的文件,我希望将该xml文件转换为json并存储为abc.json,因此该文件夹应具有abc.xml,abc.json所有文件都应该相同。

当前,我正在使用以下代码块将xml转换为json,但问题是它没有创建新的json文件。

for filename in os.listdir(path):
    if not filename.endswith('.xml'): continue
    fullname = os.path.join(path, filename)
    with open(fullname, 'r') as f:
        xmlString = f.read()
    jsonString = json.dumps(xmltodict.parse(xmlString), indent=4)
    with open(fullname, 'w') as x:
        x.write(jsonString)

任何相关建议都将不胜感激。

3 个答案:

答案 0 :(得分:3)

fullname是输入xml文件的名称。您想将其更改为“ JSON”,否则您将创建一个带有xml扩展名但json数据的文件(销毁了原始的xml文件,不是我在乎xml,而是...)

with open(fullname, 'r') as f:
    xmlString = f.read()
json_output = os.path.splitext(fullname)[0]+".json"

现在直接编写文件(无需先创建字符串)

with open(json_output, 'w') as f:
    json.dump(xmltodict.parse(xmlString), f, indent=4)

请注意,您可以像这样直接使用glob.glob,以便获得完整的xml过滤路径:

for fullname in glob.glob(os.path.join(path,"*.xml"):

答案 1 :(得分:0)

是因为您没有告诉它创建json吗?它只会覆盖原始的xml文件

dialogCustomTitleDecorLayout

答案 2 :(得分:0)

这应该有效。

import xmltodict

for filename in os.listdir(path):
    if not filename.endswith('.xml'):
        continue

    fullname = os.path.join(path, filename)

    with open(fullname, 'r') as f:
        xmlString = f.read()

    jsonString = json.dumps(xmltodict.parse(xmlString), indent=4)

    with open(fullname[:-4] + ".json", 'w') as f:
        f.write(jsonString)