如果目录已经存在,则递增目录名称。

3
如果我有一个名为Test的已经存在的目录,当我尝试创建同名目录时,如何将目录名称加1?

如果您使用标准库中的pathlib,而不是os,这将更容易。Python 3的pathlib模块:驯服文件系统 - Trenton McKinney
你的代码有什么问题? - Lord Elrond
我收到了Traceback错误,因为该目录已经存在。 - thecomputerguru
1个回答

2
您可以使用递归或循环代码。
注:
- 递归代码可能会导致错误(超出最大递归深度)。 - 循环代码,无错误运行良好。
代码 | 递归
import os

def generateDirectoryName(name, x=0):
    dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip()
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
        return dir_name
    else:
        return generateDirectoryName(name, x + 1)

def createDirectory():
    user_input = input("Enter name to create directory: ")
    generateDirectoryName(user_input)

def main():
    cwd = os.getcwd()
    createDirectory()

main()
代码 | 循环
import os

def generateDirectoryName(name, x=0):
    while True:
        dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip()
        if not os.path.exists(dir_name):
            os.mkdir(dir_name)
            return dir_name
        else:
            x = x + 1

def createDirectory():
    user_input = input("Enter name to create directory: ")
    generateDirectoryName(user_input)

def main():
    cwd = os.getcwd()
    createDirectory()

main()

输出

代码输出


我认为这可能会在用户输入的名称末尾添加一个额外的空格。编辑:我的错,没有看到else。 - Harry MW
它不会添加额外的空格。 - Dean Van Greunen
你可以使用strip字符串函数将其中一行更改为dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip() - Dean Van Greunen
@thecomputerguru 没问题,很高兴能帮忙。如果你将来需要更多的帮助,只需标记我,我会看一下... 干杯 - Dean Van Greunen
好的!谢谢! - thecomputerguru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接