【问题标题】:Python - Created number of nested foldersPython - 创建的嵌套文件夹数量
【发布时间】:2015-02-24 23:40:03
【问题描述】:

我正在尝试在 python 中创建许多嵌套文件夹。

目标: 1)向用户询问一个数字(假设是 3) 2)创建3个文件夹。 3) 在每个文件夹内,应该有 3 个文件夹。 这种嵌套应该进行 3 次。

例子:

Folder1 

文件夹 1 文件夹 2 文件夹3

文件夹 1 文件夹 2 文件夹3

文件夹 1 文件夹 2 文件夹3

Folder2 

文件夹 1 文件夹 2 文件夹3

文件夹 1 文件夹 2 文件夹3

文件夹 1 文件夹 2 文件夹3

Folder3 

文件夹 1 文件夹 2 文件夹3

文件夹 1 文件夹 2 文件夹3

文件夹 1 文件夹 2 文件夹3

这是我当前的代码:

import os
i = 0
num = 0
while i<17:
    num+=1
    name="Python"+ str(num)
    i+=1

这仅用于创建第一组文件夹(我已经取了 17 个)。 非常感谢您的帮助。

(我正在运行 Windows)

编辑:

更清晰的例子:http://s9.postimg.org/sehux992n/20141228_201038.jpg

(以3为用户输入)

从图中我们可以看到有3层。

【问题讨论】:

  • 听起来是为递归函数量身定做的。
  • 是的,但之后我不知道如何继续
  • 所以用户输入1个数字还是2个?
  • 用户输入可以自己喜欢的数字(小于50,因为它是指数函数)。
  • 如示例中,它们将被命名为:Folder1,Folder2 .....

标签: python directory creation


【解决方案1】:

文件夹内不能有同名的子目录。如果要添加不同名称的输入 * 输入目录:

import os

inp = int(raw_input())

folders = [("Folder{}".format(i)) for i in xrange(1,inp+1)]
for dr in xrange(1,inp+1):
    os.makedirs("Folder{}".format(dr))
for fold in folders:
    os.chdir(fold)
    for i in xrange(1, inp*inp+1):
        os.makedirs("Folder{}".format(i))
    os.chdir("..")

也许这更接近你想要的:

import os

inp = int(raw_input())

folders = [("Folder{}".format(i)) for i in xrange(1, inp+1)]
for fold in folders:
    os.makedirs(fold)
    os.chdir(fold)
    for fold in folders:
        os.mkdir(fold)
        os.chdir(fold)
        for fold in folders:
            os.mkdir(fold)
        os.chdir("..")
    os.chdir("..")

【讨论】:

  • @WhiteFlameAB,正如我在评论中所说,我有点不确定您的嵌套要求,您能否在输入为 3 时添加一个完整的文件夹树。一旦我能准确理解您的意思只是嵌套一个for循环的问题
  • 我添加了一个链接,可以更好地解释嵌套
【解决方案2】:

部分代码,请随意填写:

def recursive_make_folders(path, width, depth):
    for i in range(1, width + 1):
        folder_name = make_folder_name(i)
        make_folder(path + folder_name)
        if depth > 1:
            recursive_make_folders(path + folder_name, width, depth - 1)

请记住,这将创建 width ** depth 文件夹,这可能是一个非常大的数字,尤其是当 depth 增加时。

编辑:

  • 在我显示path + folder_name 的地方,您需要实际使用os.path.join(path, folder_name)
  • make_folder 应该变成 os.mkdir
  • 如果希望代码在当前目录运行,可以使用"."作为初始路径

【讨论】:

  • 输入路径时,Python 返回无效语法错误。 (对于驱动器号)。假设我想在当前目录中创建它?
  • make_folder_name 是什么?
  • 我添加了一个链接,可以更好地解释嵌套
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多