固定存储在文件夹中的多个xml文件的格式吗?

时间:2018-08-07 08:01:47

标签: python xml

我有50个文件夹,每个文件夹都包含一个xml文件。问题是格式是 应该是这样的:

<data>
    <items>
        <item name="item1_πα"></item>
        <item name="item2_πα"></item>
        <item name="item3_πα"></item>
        <item name="item4_πα"></item>
    </items>
</data>

但是

b'<data>\n  <items>51041<item name="item1_\xcf\x80\xce\xb1\xcf\x81\xce\xb1\xce\xb3\xcf\x89\xce\xb3\xce\xae"/>\n    <item name="item2"/>\n    <item name="item3"/>\n    <item name="item4"/>\n  </items>\n</data>\n\n'

我可以循环修改它们,并使它们显示为应有的样子吗?

类似这样的东西:

for i in os.listdir(r"C:\Users\user\Desktop\testin"): # <- here are the 50 folders
    with open('bac.xml', 'r'): # open each xml
        with open('bac.xml','w'): # write each xml formatted now
            example.writexml(file, indent='\n', addindent=' ',encoding = 'utf-8')

注意:每个文件夹中的所有xml文件都具有相同的名称。

1 个答案:

答案 0 :(得分:0)

您遇到的问题可能与字节的解码有关: 这个thread有一个解决方案。 基本上,您需要将文件读取为一个字节(因此,'rb',b表示字节),然后decode()读取它:

import os    

# this will get you all the subdirectories 
name = r"C:\Users\user\Desktop\testin"
folders_list = [os.path.join(name, directory) for directory in os.listdir(name) if os.path.isdir(os.path.join(name,directory))]

for folder in folders_list:
    #when you read the file:
    with open(folder+r'\bac.xml', 'rb') as f:
        your_file = f.read().decode()
    # if you need to write it anywhere else:
    with open(folder+r'\bac.xml', 'wb') as f:
        f.write(your_file.encode())