gpt4 book ai didi

python : Rename files

转载 作者:行者123 更新时间:2023-11-28 22:50:53 25 4
gpt4 key购买 nike

我从 XML 文件中读出它们的类别,然后重命名并保存它们的年份。因此,文件“XYZ.xml”现在是“News_2014.xml”。

问题是,从 2014 年开始,有多个 XML 文件的类别为“新闻”。使用我的代码,我删除了所有其他文件,并且只能保存 1 个文件。我该怎么做才能保存每个文件?例如,如果有 2 个文件的类别为“新闻”且年份为 2014 年,则文件名应为:“News_2014_01.xml”和“News_2014_02.xml”。

因为还有其他类别,我不能简单地实现一个递增的整数,即另一个类别为“历史”的文件仍应具有名称“History_2014_01.xml”(而不是 ...03.xml)。

实际上,我有以下代码:

for text, key in enumerate(d):
#print key, d[key]
name = d[key][(d[key].find("__")+2):(d[key].rfind("__"))]
year = d[key][(d[key].find("*")+1):(d[key].rfind("*"))]
cat = d[key][(d[key].rfind("*")+1):]
os.rename(name, cat+"_"+year+'.xml')

最佳答案

一旦您找到文件的“正确”名称,例如News_2014.xml,您可以创建一个循环来检查文件是否存在,如果存在则向其添加一个递增的后缀:

import os
fileName = 'News_2014.xml'
baseName, extension = os.path.splitext(fileName)
suffix = 0

while os.path.exists(os.path.join(directory, fileName)):
suffix += 1
fileName = '{}_{:02}.{}'.format(baseName, suffix, extension)

print(fileName)
os.rename(originalName, fileName)

你可以把它放到一个函数中,这样更容易使用:

def getIncrementedFileName (fileName):
baseName, extension = os.path.splitext(fileName)
suffix = 0

while os.path.exists(os.path.join(directory, fileName)):
suffix += 1
fileName = '{}_{:02}.{}'.format(baseName, suffix, extension)
return fileName

然后在您的代码中使用它:

for key, item in d.items():
name = item[item.find("__")+2:item.rfind("__")]
year = item[item.find("*")+1:item.rfind("*")]
cat = item[item.rfind("*")+1:]

fileName = getIncrementedFileName(cat + '_' + year + '.xml')
os.rename(name, fileName)

关于 python : Rename files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com