我有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文件都具有相同的名称。
答案 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())