我有一个包含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)
任何相关建议都将不胜感激。
答案 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)