根据名称创建一个或多个目录

时间:2017-02-06 16:24:03

标签: python

我想知道是否有人可以帮助我使用python脚本:

  1. 询问用户将要添加的新目录的名称。 将目录名称添加到新列表。
  2. 要求用户回答“是”或“否”是否要添加 另一个目录。
  3. - 如果响应为“否”,则在列表中为名称创建一个目录。

    • 目录完成后退出脚本执行。

    • 在退出脚本之前,通知用户已创建目录。 - 如果响应为“是”,则询问用户要创建的新目录的名称。

    - 将该名称添加到上面创建的列表

    - 如果响应不是上述两个选项(即他们确实如此) 不要同时输入“是”和“否”,然后重复提问。

    这是我到目前为止所做的,它创建了新的目录,但后来我对“是”的响应感到困惑:

    import os
    root_path = r"C:\XYZ"
    list_dir = []
    userinput1 = raw_input("Please enter the name of new directory:")
    list_dir.append(userinput1)
    userinput2 = raw_input("Would you like to add another directory? yes/no: ")
    if userinput2 == "no":
      for list in list_dir:
        os.mkdir(os.path.join(root_path,list))
    

    非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我不确定您是否保留了最后才创建的文件夹列表对您来说很重要。假设不是,这应该可以解决您的问题:

import os

root = r"C:\XYZ"

while True:
    dir_name = raw_input("Please enter the name of new directory: ")
    try:
        os.mkdir(os.path.join(root, dir_name))
        print("Directory '{name}' was created.".format(name=dir_name))
    except OSError:
    print("Directory '{name}' already exists.".format(name=dir_name))
    repeat = raw_input("Would you like to add another directory? yes/no: ")

    if repeat.lower() != "yes" and repeat.lower() != "y":
        break

如果出于某种原因,最重要的是只在最后创建列表:

import os

root = r"."
directory_list = []

while True:
    directory_name = raw_input("Please enter the name of new directory: ")
    directory_list.append(directory_name)
    repeat = raw_input("Would you like to add another directory? yes/no: ")

    if repeat.lower() != "yes" and repeat.lower() != "y":
        break

for directory in directory_list:
    try:
        os.mkdir(os.path.join(root, directory))
        print("Directory '{name}' was created.".format(name=directory))
    except OSError:
        print("Directory '{name}' already exists.".format(name=directory))

在这两种情况下,如果用户输入" y","是","是"," yEs&#34的任何变体,它将继续;等等,否则停止。

希望这会有所帮助。 :)

答案 1 :(得分:0)

尝试添加while循环来询问目录:

已更新

import os


root_path = r"C:\XYZ"
list_dir = []

while True:
    userinput1 = raw_input("Please enter the name of new directory:")
    list_dir.append(userinput1)
    userinput2 = None
    while userinput2 != "yes" and userinput2 != "no":
        userinput2 = raw_input("Would you like to add another directory? yes/no: ")

    if userinput2 == "no":
        break

for directory in list_dir:
    os.mkdir(os.path.join(root_path, directory))

更新

  • 首先将if == "no":修复为if userinput2 == "no":

  • 第二次添加for以循环显示包含目录名称的列表并逐个创建。