在Python中使用选择的名称创建一个文件夹

时间:2020-07-22 08:31:46

标签: python tkinter directory directory-structure folderbrowserdialog

我用Tkinter编写了一个小型GUI,在其中我要求用户通过filedialog.askdirectory来保存某些图像的目录。有了这些信息,我就可以使用os.mkdir()在该目录中创建一个文件夹,但是我需要预先定义其名称(我使用的结构类似于year_month_day...。)。

在tkinter中还是使用os库存在,用户可以在其中定义文件夹的名称然后创建?这个想法是,当Windows文件夹浏览器打开时,他们可以走所需的路径并用他们想要的名称创建一个文件夹

3 个答案:

答案 0 :(得分:0)

您可以通过放置一个称为文本小部件的input小部件来做到这一点。在其中输入文件夹名称并使用filedialog选择路径后,您可以创建一个函数来创建目录。

def create_dir()
    name = file_name.get() # took from the input
    path = os.path.join(dir, name) # dir is a directory taken from the filedialog

答案 1 :(得分:0)

这是您想要的吗?

import os
from tkinter.filedialog import askdirectory
import tkinter.messagebox
import tkinter as tk

# Dir select
def selectPath():   
    path_ = askdirectory()
    path.set(path_)

def create_file():  
    print("folder_name: ", folder.get())
    print("path_name: ", path.get())
    dirs = os.path.join(path.get(), folder.get())
    if not os.path.exists(dirs):
        os.makedirs(dirs)
        tkinter.messagebox.showinfo('Tips:','Folder name created successfully!')
    else:
        tkinter.messagebox.showerror('Tips','The folder name exists, please change it')

root = tk.Tk()
root.title('Create folder')
root.geometry('400x380')

path = tk.StringVar()   # Receiving user's file_path selection
folder = tk.StringVar() # Receiving user's folder_name selection

tk.Label(root,text = "Target path:").place(x=50, y= 250)
tk.Entry(root, textvariable = path).place(x=110, y= 250)
tk.Button(root, text = "Path select: ", command = selectPath).place(x=265, y= 250)


tk.Label(root,text = "Folder name:").place(x=50, y= 300)
tk.Entry(root,textvariable = folder).place(x=110, y= 300)
tk.Button(root, text = "Submit: ", command = create_file).place(x=265, y= 300)

root.mainloop()

pathfolder变量是用户选择的路径和创建的文件夹名称。

在我的计算机上看起来像这样: enter image description here enter image description here

答案 2 :(得分:0)

from datetime import datetime
import os
from tkinter import filedialog

datestring = datetime.today().strftime('%Y-%m-%d') #Formats the date according to year,month,day. 
#You can check out datetime for more info
default_folder = 'Adrain-{}'.format(datestring)

if os.path.exists(default_folder) == True: #Only creates a new folder when non-existing
    pass
else:
    os.mkdir(default_folder)

file_directory = filedialog.askdirectory(title = 'Select the target folder for saving             
records', initialdir = default_folder)