Python 使用itertools创建子目录

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

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

代码如下:

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()

在第26行中,您正在将当前工作目录更改为根目录,该根目录似乎是“p:\Projects\u 2013\”

您需要将第26行更改为:

os.chdir(os.path.join(path, asset_name))
另外,请注意,如果p:\Projects\u 2013\不存在,代码将失败。你确定它会为每个人存在吗?您是否也确定每个人都在将Projects_2013所在的驱动器映射到P?如果不是,您可能希望使用


希望这有帮助

嗯,这太尴尬了

让一位同事启动一段在我的机器上出现故障的Python代码,结果却在他的机器上运行!???在我们的网络上为自己创建了一个新的用户帐户,并使此代码正常工作,结果发现我的用户帐户出现了某种损坏!:/


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

我的答案是否有用?我很好奇抱歉没有,我确实在你的答案下面贴了一个回复。“asset_name”似乎只是被scriptHi忽略了谢谢你的回复,是的,每个人在登录时都有自己的P:drive映射,所以所有需要它的人都有它,但即使有你的修订,我也能理解你为什么建议它,我以前甚至尝试过同样的方法,它仍然在P:\Projects\u 2013\而不是P:\Projects\u 2013\“asset\u name”\下创建子目录,就好像代码在创建子目录之前没有创建“asset\u name”目录一样(如果有意义的话?),似乎“asset\u name”被忽略了,我不知道为什么