0

Python は非常に初めてで、非常に基本的なトレーニング コースを終了したばかりで、python3 を使用している最初のアプリケーションを詳しく調べています。ユーザー定義のディレクトリの下に標準のディレクトリ構造を作成するために itertools と os.mkdirs() を取得しようとしています。ユーザーはディレクトリ名を指定します。その変数は「asset」と呼ばれ、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()
4

2 に答える 2

0

まあ、これは恥ずかしいです.....

同僚に、私のマシンで失敗していた Python コードの一部を起動するように依頼しましたが、彼のマシンで動作するだけでした!? 私たちのネットワーク上に新しいユーザー アカウントを作成し、このコードを問題なく動作させたところ、私のユーザー アカウントが何らかの破損を受けていたことが判明しました。:/

私が投稿した最初のコードは実際に機能し、親ディレクトリとサブディレクトリを作成します。

于 2013-11-04T11:10:43.537 に答える
0

26 行目で、現在の作業ディレクトリを「P:\Projects_2013\」と思われるルート ディレクトリに変更しています。

行 26 を次のように変更する必要があります。

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

また、P:\Projects_2013\ が存在しない場合、コードは失敗することに注意してください。それは誰にとっても存在すると確信していますか?また、Projects_2013 が存在するこのドライブを全員が P にマッピングしていると確信していますか? そうでない場合は、代わりにUNCを使用することをお勧めします

お役に立てれば!

于 2013-10-29T16:44:00.100 に答える