【发布时间】:2020-12-14 18:43:39
【问题描述】:
import xml.etree.cElementTree as ET
import os
path = r'C:\Users\LME_s\Desktop\python quiz\Sessions'
for filename in os.listdir(path):
if not filename.endswith('.xml'): continue
fullname = os.path.join(path, filename)
tree = ET.parse(fullname)
root=tree.getroot()
numbers = [e.attrib['Number'] for e in root.findall('.//ActionUnit')]
base_path = r'C:\Users\LME_s\Desktop\python quiz\Sessions/new'
for folder in numbers:
os.mkdir(os.path.join(base_path, folder))
#print(numbers)
我创建了一个循环来读取 XML 数据并将这些数据动态地放入数组中。这是输出,所以这是我的问题。在每次迭代中,我需要为每个数组元素创建名为“AU45”和“not AU45”的文件夹。这是一个问题,在第一次迭代中,我创建了一个名为“10”的文件夹,但在下一次迭代中,我还有另一个 10 值,我得到一个异常,因为一个名为“10”的文件夹也存在。我怎样才能避免这种情况?
【问题讨论】:
-
您能否详细介绍一下文件夹的命名结构?通常这是一个两行解决方案,首先检查文件夹的路径是否存在,然后如果文件夹不存在则创建它。 os.makedirs(路径/到/文件夹)
-
好的,我创建了一个新的代码块,为每个数组元素创建一个文件夹名称,但我还有另一个问题。你能检查一下代码行吗?我收到一个错误,因为在循环中我之前创建了一个名为“10”的文件夹,它给出了一个错误,因为我在另一个数组中有另一个“10”。
-
所以我不确定你想要完成什么。如果文件夹 10 已经存在,为什么会出现问题?是否要将新文件写入同一文件夹中?创建文件夹时是否出错?没有你的具体情况,几乎不可能提供帮助。
-
您在每次迭代中看到我的数组输出了吗?我正在从每个 XML 文件中读取一个值并将其推送到一个数组中。所以在每次迭代中,我都会创建一个文件夹,并且文件夹的名称等于数组值。在第一次迭代中,我创建了名为 45 和 5 的文件夹,在第二次 10 和 25 中,在第三次迭代中,我得到了一个异常,因为一个名为 10 的文件夹已经存在,并且我得到一个异常,这个文件夹已经存在,你不能创建另一个文件夹。我需要避免这种情况。所以基本上我需要一个函数来跳过已经存在的数组值。
标签: python xml directory operating-system mkdir