如何在文件命名中增加计数器?

2024-03-29 06:21:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写xml文件,如果已经存在同名的文件,我想在xml文件名的末尾添加一个数字,因此得到:

info_for_john_0.xml
info_for_john_1.xml
info_for_john_2.xml

这是我目前的代码:

def pxml(listofdata):
    root = et.Element('INFORMATION')
    et.SubElement(root, 'last_name') = listofdata[0]
    et.SubElement(root, 'phone') = listofdata[1]
    et.SubElement(root, 'email') = listofdata[2]

    tree = et.ElementTree(root)
    ctr = 1
    for i in tree.iter('last_name'): # should be person_id
        name = i.text

    if os.path.exists(f"info_for_{name}_{ctr}.xml") == True:
        tree.write(f"info_for_{name}_{ctr}.xml")
        ctr += 1
    else:
        tree.write(f"info_for_{name}_{ctr}.xml")

然而,我得到的只是:

info_for_john_0.xml
info_for_john_1.xml

之后就是不断地重写info\u for\ujohn\u1.xml。我怀疑这是因为我在函数中声明了ctr=1,所以每次调用它时,ctr的值都会重置为1。你知道吗

我尝试过将ctr作为全局变量并访问,如下所示:

ctr = 1

def pxml(listofdata):
    root = et.Element('INFORMATION')
    et.SubElement(root, 'last_name') = listofdata[0]
    et.SubElement(root, 'phone') = listofdata[1]
    et.SubElement(root, 'email') = listofdata[2]

    tree = et.ElementTree(root)
    count = global ctr
    for i in tree.iter('last_name'): # should be person_id
        name = i.text

    if os.path.exists(f"info_for_{name}_{ctr}.xml") == True:
        tree.write(f"info_for_{name}_{ctr}.xml")
        count += 1
    else:
        tree.write(f"info_for_{name}_{ctr}.xml")

但是我收到一个语法错误,count=global ctr是无效语法。我不确定如何访问全局变量。--编辑--解决如下问题,更改为:

global ctr
count = ctr

Tags: nameinfotreeforcountrootxmljohn
2条回答
tree = et.ElementTree(root)
for ctr,i in enumerate(tree.iter('last_name')): # should be person_id
    name = i.text
    tree.write(f"info_for_{name}_{ctr}.xml")

count = global ctr更改为

global ctr
count = ctr

看看这样行不行

相关问题 更多 >