【问题标题】:Create a folder with a choosen name in Python在 Python 中创建一个具有选定名称的文件夹
【发布时间】:2020-11-11 18:00:22
【问题描述】:

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

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

【问题讨论】:

    标签: python tkinter directory directory-structure folderbrowserdialog


    【解决方案1】:

    您可以通过放置一个称为文本小部件的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
    

    【讨论】:

      【解决方案2】:

      这是你想要的吗?

      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 变量是用户选择的路径和创建的文件夹名称。

      在我的电脑上看起来像这样:

      【讨论】:

      • 最好改用os.path.join(path.get(), folder.get())。还要避免同时使用from tkinter import *import tkinter as tk,后者就足够了。
      • @acw1668 是的,你的建议很好,我改了。
      【解决方案3】:
      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-12
        • 2019-06-12
        • 1970-01-01
        相关资源
        最近更新 更多