0

我在使用 python 时遇到了一些困难。我有一个与 ArcGIS 结合使用的代码,它将文件名解析到数据库中以返回相应的唯一 ID 并使用此唯一 ID 重命名文件夹。它以前一直工作得很好,但是我需要处理一些异常,例如当目录中已经存在唯一 ID 时,以及当目录上的操作已经完成时。唯一 id 包含所有数字,所以我一直在尝试:

elif re.findall('[0-9]', fn):
 Roll = string.join(string, "1")
 print (Roll)
    os.rename(os.path.join(basedir, fn),
                os.path.join(basedir, Roll))

它返回具有唯一 ID 的所有文件夹。我只是不知道如何计算目录中特定文件夹名称出现的次数。

4

3 回答 3

1

将名称添加到集合中,然后检查它是否在集合中。

于 2013-07-18T16:05:16.110 回答
0

一种方法可能如下:创建一个字典,其键是您的文件夹名称,与每个键关联的值是一个整数,即该名称的出现次数。每次处理文件夹时,适当地更新字典的键/值。在集合中添加所有文件夹名称后,检查字典中的所有计数值,只要计数大于 1,您就知道您有重复。

或者,如果您需要随时检测重复项,只需检查密钥是否已经存在。在这种情况下,您根本不需要该值,您可以使用集合或列表而不是字典。

你可以collections.Counter用来帮助你。您可以在这个问题中看到一个示例用法。使该示例适应您的需求应该不会太难。

希望这可以帮助。

于 2013-07-18T16:17:57.667 回答
0

我怀疑你让自己变得比你需要的更难,但回答你的直接问题:

folder_name_to_create = 'whatever'

if os.path.exists(folder_name_to_create):
    folder_name_to_create += '_1'

如果您遇到名称冲突,我怀疑您需要查看您的“独特”命名算法,但也许我误解了您的意思。

于 2013-07-18T17:22:20.230 回答