首页 > 解决方案 > 使用循环创建文件夹

问题描述

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”的文件夹也存在。我怎样才能避免这种情况?

输出

标签: pythonxmldirectoryoperating-systemmkdir

解决方案


将创建的文件夹保存在一组中。

import xml.etree.cElementTree as ET
import os
path = r'C:\Users\LME_s\Desktop\python quiz\Sessions'
created_folders = set()
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:
        if folder not in created_folders:
            os.mkdir(os.path.join(base_path, folder))
            created_folders.add(folder)

推荐阅读