使用 itertools 创建子目录



Python非常陌生,刚从非常基本的培训课程中走出来,深入研究了我的第一个应用程序,我正在使用python3,我一直在尝试让itertools和os.mkdirs()在用户定义的目录下创建一个标准的目录结构,用户声明目录名称,该变量称为"资产",它是从tk输入的。入口行,代码应在路径"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()

在第 26 行中,您将当前工作目录更改为似乎为 "P:\Projects_2013\" 的根目录

您需要将行

更改为 26

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

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

希望这有帮助!

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

要求一位同事启动一段在我的机器上失败的 Python 代码,只是为了让它在他的???上工作,在我们的网络上为自己创建了一个新的用户帐户,并使这段代码正常工作,结果我的用户帐户有某种损坏! :/

我发布的初始代码实际上确实有效,并创建了一个父目录和子目录。

最新更新