2013-10-29 2 views
0

Python에 처음 접했던 매우 기본적인 교육 과정에서 빠져 나와 첫 번째 응용 프로그램을 탐색하면서 python3을 사용하고 itertools 및 os.mkdirs()를 만들려고했습니다. 사용자가 정의한 디렉토리 아래의 표준 디렉토리 구조 사용자가 디렉토리 이름을 말하면, 그 변수는 tk.Entry 라인에서 입력되는 "asset"이라고 불리며, 코드는 사용자 디렉토리와 "P : \ projects_2013 \ " 오류는 하위 디렉토리가 나를 당황하게하는 '자산'하위 디렉토리가 아닌 PATH 바로 아래에 생성된다는 것입니다. 그 구문은 확실하지만 나무가 보이지 않습니다. ! 어떤 아이디어 ... 여기 itertools를 사용하여 하위 디렉토리를 만듭니다.

코드입니다 :

라인 (26)에
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() 
+0

내 대답을 사용하는 행운? 나는 궁금 하네 – mlnyc

+0

미안하지만, 답장에 답글을 올렸습니다. 그것은 'asset_name'단순히 스크립트에 의해 무시되고있는 것으로 나타납니다 – jon141

답변

0

, 당신은 것 같다 루트 디렉토리에 현재 작업 디렉토리를 변경 :

"P \ \ Projects_2013" 이 26로 줄을 변경해야합니다 \ Projects_2013 \ 존재하지 않습니다

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

는 또한, P는 경우 코드가 실패 않습니다. 모두에게 존재할 거라 확신합니까? Projects_2013이 존재하는이 드라이브를 모두 P로 매핑하고 있습니까? 그렇지 않은 경우 UNC 대신

을 사용하시기 바랍니다. 잘

+0

안녕하세요, 답변을 주셔서 감사합니다, 그래, 모두가 자신의 P : 로그인 드라이브에 매핑 된 그래서 그것을 필요로하는 모든 사람들이 내가 당신이 왜 볼 수있는 수정과 함께 그것을 제안했다, 나는 심지어 이전에 같은 것을 시도했다. 서브 디렉토리를 생성하기 전에 코드가 "asset_name"디렉토리를 생성하지 않는 것처럼 P : \ Projects_2013 \ "asset_name"\ its보다는 P : \ Projects_2013 \에 하위 디렉토리를 만든다. dirs (의미가있는 경우) – jon141

+0

"asset_name"이 무시되고있는 것 같습니다. 이유는 모르겠습니다. – jon141

0

,이 당황 .....

는 그의! 작업만을 위해, 내 컴퓨터에 실패했다 파이썬 코드의 조각을 발사 할 수있는 동료를 묻는 ??? 자신의 네트워크에 새로운 사용자 계정을 만들었고 문제없이이 코드를 작동 시켰습니다. 내 사용자 계정에 일종의 부패가있었습니다! :/

내가 게시 한 초기 코드는 실제로 작동하며 부모 디렉토리와 하위 디렉토리를 만듭니다.

관련 문제