使用itertools创建子目录

时间:2013-10-29 16:21:03

标签: python itertools mkdirs

非常新的Python,刚刚离开了一个非常基础的培训课程并深入研究我的第一个应用程序我正在使用python3而我一直在尝试使用itertools和os.mkdirs()来创建一个标准的目录结构。用户定义目录用户声明目录名称,该变量称为“资产”,它是从tk.Entry行输入的,代码应生成用户目录和路径“P:\ projects_2013”​​下的6个子目录 错误是子目录是直接在PATH下创建的,而不是在“资产”子目录下创建,这令我感到困惑,我确定它只是语法,但我看不到木头的树木!任何想法......

这是代码:

import tkinter as tk
import getpass
import os, sys
import itertools

path = ("P:\\Projects_2013\\")
#create new window
root = tk.Tk()
#set window title
root.title("Toolkit")
#set window size
root.geometry("600x600+200+200")
#set window icon
root.wm_iconbitmap('Cartoon_Robot_200.ico')


#add dir_creator as widget
def directory():
    directory = path
    if directory:
       path.set(directory)


def genAsset():
    asset_name = asset.get()
    os.chdir(path)
    dirs = [[asset_name],["subdir1", "subdir2", "subdir3", "subdir4", "subdir5", "subdir6"]]
    for item in itertools.product(*dirs):
        os.makedirs(os.path.join(*item))

asset = tk.StringVar()
#wrtuser = tk.StringVar()

#wrtuser_label = tk.Label(root.text=("Username =").grid(row=2, column=1)
#wrtuser_entry = tk.Entry(root, textvariable=wrtuser, width=50).grid(row=2, column=2)
asset_label = tk.Label(root, text="Create New Project:").grid(row=3)
asset_entry = tk.Entry(root, textvariable=asset, width=50).grid(row=3, column=2)
create_button = tk.Button(root, text="Create Folder", command=genAsset).grid(row=4, column=3)
dir_label = tk.Label(root, text="The project directory will be created in P:\Projects_2013\\").grid(row=4, columnspan=4)


#draw window and start application
root.mainloop()

2 个答案:

答案 0 :(得分:0)

在第26行,您将当前工作目录更改为根目录,该目录似乎是“P:\ Projects_2013 \”

您需要将第26行更改为:

os.chdir(os.path.join(path, asset_name))

另请注意,如果P:\ Projects_2013 \不存在,您的代码将失败。你确定每个人都会存在吗?你是否也确定每个人都将这个驱动器映射到Projects_2013所在的位置?如果没有,您可能希望使用UNC代替

希望这有帮助!

答案 1 :(得分:0)

好吧,这很尴尬......

要求一位同事启动我的机器上发生故障的Python代码,只是为了让它工作!在我们的网络上创建了一个新的用户帐户,并且这个代码在没有问题的情况下运行,结果我的用户帐户出现了某些损坏! :/

我发布的初始代码实际上工作并创建父目录和子目录。