Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

Chào mừng bạn đến với copyassignment. com. Trong hướng dẫn này, chúng ta sẽ tìm hiểu File Explorer trong Python bằng cách sử dụng mô-đun Tkinter. Về cơ bản, trình thám hiểm tệp là gì? . Nhấn vào đây để lấy mã nguồn hoàn chỉnh

Ở đây chúng ta sẽ xây dựng một dự án dựa trên GUI File Explorer trong Python bằng cách sử dụng các mô-đun Tkinter, Shutil, filedialog và OS và sẽ tìm hiểu từng bước cần thiết để quản lý các tệp và thư mục trong trình khám phá tệp hoặc trình quản lý tệp

Mục lục

  1. Giới thiệu
  2. Các bước tạo File Explorer trong Python bằng Tkinter
    • 1. Nhập mô-đun
    • 2. Chức năng mở một tệp
    • 3. Chức năng sao chép một tập tin
    • 4. Chức năng xóa File
    • 5. Chức năng đổi tên một tập tin
    • 6. Chức năng mở một thư mục
    • 7. Chức năng xóa Thư mục bằng Python file explorer
    • 8. Hàm di chuyển thư mục
    • 9. Chức năng liệt kê tất cả các tệp trong thư mục
    • 10. Chức năng tạo nhãn cửa sổ chính và các nút cho File explorer trong Python
  3. Hoàn thành mã của File Explorer bằng Python bằng Tkinter

Các bước tạo File Explorer trong Python bằng Tkinter

1. Nhập mô-đun

from tkinter import *  # import all the widgets
import os  #importing the os and shutil module
import shutil
from tkinter import messagebox as mb #import the mesassage box for displaying the messages
from tkinter import filedialog as fd  # imports the filedialog  box

Trong mã này, chúng tôi đã nhập tất cả các mô-đun cần thiết cần thiết cho hoạt động duyệt tệp

  1. Tkinter -Mô-đun Tkinter tất cả chúng ta để tạo cửa sổ GUI
  2. HĐH – Mô-đun HĐH cho phép chúng tôi thực hiện các thao tác khác nhau trên các tệp cũng như trên đường dẫn của nó
  3. Shutil – Mô-đun Shutil cho phép bạn di chuyển hoặc sao chép tệp

Ở đây, chúng tôi đã nhập hộp thư dưới dạng mb và tệp hộp thoại dưới dạng fd trong đó hộp thư được sử dụng để hiển thị các thông báo khác nhau trên màn hình với các biểu tượng và mô-đun tệp hộp thoại hoạt động như một phần tổng hợp mở và lưu hộp thoại

Không cần phải cài đặt riêng các mô-đun này vì chúng đi kèm với python

2. Chức năng mở một tệp

# defining the function to open a file
def openAFile():
    # selecting a file using askopenfilename of filedialog as fd
    files = fd.askopenfilename(
        title="Select a file of any type",filetypes=[("All files", "*.*")]
    )
    os.startfile(os.path.abspath(files))

Trong đoạn mã trên, chúng tôi đã tạo một hàm openAFile() nơi chúng tôi đã chọn một tệp với sự trợ giúp của phương thức của hộp thoại tệp askopenfilename(). Chúng tôi đã định nghĩa các loại tệp là “Tất cả các loại”. Phương thức startfile() của các mô-đun HĐH được sử dụng để mở tệp đã chọn. Để chuẩn hóa phiên bản của đường dẫn tệp, phương thức abspath() được sử dụng trên tệp được chọn

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

3. Chức năng sao chép một tập tin

# function to copy a file
def copyAFile():
    # using the filedialog's askopenfilename() method to select the file
    copythefile = fd.askopenfilename(
        title="Select a file to copy",filetypes=[("All files", "*.*")]
    )
    # use the filedialog's askdirectory() method for selecting the directory
    dirToPaste = fd.askdirectory(title="Select the folder to paste the file")
    try:
        shutil.copy(copythefile, dirToPaste)
        mb.showinfo(title="File copied!",message="The file has been copied to the destination."
        )
    except:
        mb.showerror(title="Error!",message="File is unable to copy.Please try again!"
        )

Trong đoạn mã trên, chúng ta đã định nghĩa một hàm copyAFile(). Trong chức năng này, chúng tôi đang sử dụng phương thức askopenfilename() của mô-đun filedialog để chọn tệp sẽ được sao chép. Phương thức askdirectory() cho phép chúng ta chọn thư mục mà chúng ta sẽ dán tệp. Trong khối try-ngoại trừ, chúng tôi đang sử dụng phương pháp sao chép của mô-đun Shutil để sao chép tệp đến đích được xác định. Các phương thức showinfo() và showerror() của mô-đun hộp thư đang được sử dụng để hiển thị các thông báo về "tệp đã sao chép" và "lỗi" tương ứng

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

4. Chức năng xóa File

# function to delete a file
def deleteAFile():
    # selecting the file using the filedialog's askopenfilename() method
    files = fd.askopenfilename(
        title="Choose a file to delete",filetypes=[("All files", "*.*")]
    )
    # delete the file using the remove() method
    os.remove(os.path.abspath(files))
    mb.showinfo(title="File deleted!", message="The selected file has been deleted.")

Trong đoạn mã trên, chúng tôi đang xác định một hàm là deleteAFile(). Trong chức năng này, chúng tôi đang sử dụng phương thức askopenfilename() để chọn tệp sẽ bị xóa khỏi thư mục. Chúng tôi đang sử dụng phương thức remove() của mô-đun HĐH để xóa một tệp. Phương thức abspath() để chuẩn hóa đường dẫn tệp. Phương thức showinfo() hiển thị thông báo mong muốn trong File Explorer bằng Python

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

5. Chức năng đổi tên một tập tin

# function to rename a file
def renameAFile():
    rename_win = Toplevel(win_root)
    rename_win.title("Rename File")
    rename_win.geometry("300x100+300+250")
    rename_win.resizable(0, 0)
    rename_win.configure(bg="#F6EAD7")

    # create a lebel
    rename_label = Label(
        rename_win,text="Enter the file name:",font=("Calibri", "8"),bg="white",fg="blue"
    )
    # placing the label on the window
    rename_label.pack(pady=4)
    rename_field = Entry(rename_win,width=26,textvariable=fileNameEntered,relief=GROOVE,font=("Calibri", "10"),bg="white",fg="blue"
    )
    # placing the entry field on the window
    rename_field.pack(pady=4, padx=4)

    # creating a button
    submitButton = Button(
        rename_win,text="Submit",command=NameSubmit,width=14,relief=GROOVE,font=("Calibri", "9"),
    bg="white",fg="blue",activebackground="#709218",activeforeground="#FFFFFF"
    )
    submitButton.pack(pady=2)


# defining a function get the file path
def showFilePath():
    files = fd.askopenfilename(title="Select the file to rename", filetypes=[("All files", "*.*")])
    return files


# defining a function that is called when we click on Submit
def NameSubmit():
    renameName = fileNameEntered.get()
    # setting the entry field to empty string
    fileNameEntered.set("")
    fileName = showFilePath()
    # creating a new file name for the file
    newFileName = os.path.join(os.path.dirname(fileName), renameName + os.path.splitext(fileName)[1])
    os.rename(fileName, newFileName)
    mb.showinfo(title="File Renamed!", message="The selected file has been renamed.")

Trong đoạn mã trên, chúng ta đã định nghĩa một hàm renameAFile(). Trong hàm này, chúng ta đã định nghĩa một cửa sổ bật lên của lớp Toplevel(). Trong cửa sổ bật lên này, chúng tôi đã xác định các tiện ích Nhãn(), Mục nhập() và Nút () cho phép chúng tôi nhập tên mới cho tệp mà chúng tôi sẽ đổi tên

Hàm khác showfilePath() được định nghĩa. Trong trường hợp này, phương thức askopenfilename() được sử dụng để lưu trữ đường dẫn tệp trong biến. Sau đó chúng tôi sẽ trả lại biến tệp

Hàm tiếp theo là hàm NameSubmit() được định nghĩa dùng để gửi tên của tệp mới. Biến renameName lưu trữ giá trị của đối tượng fileNameEntered bằng phương thức get(). Phương thức set() đặt giá trị thành một chuỗi rỗng. hệ điều hành. đường dẫn. join() được sử dụng để nối thêm đường dẫn thư mục với tên tệp mới được nhập cùng với phần mở rộng

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

Hơn 100 dự án Python tốt nhất với mã nguồn

6. Chức năng mở một thư mục

# defining a function to open a folder
def openAFolder():
    # using the filedialog's askdirectory() method to select the folder
    folder1 = fd.askdirectory(title="Select Folder to open")
    os.startfile(folder1)

Ở đây chúng ta đã định nghĩa hàm openAFolder(). Chức năng này sử dụng phương thức askdirectory() để chọn thư mục và phương thức startfile() của module OS để mở thư mục đã chọn

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

7. Chức năng xóa Thư mục bằng Python file explorer

# defining a function to delete the folder
def deleteAFolder():
    folderToDelete = fd.askdirectory(title='Select Folder to delete')
    os.rmdir(folderToDelete)
    mb.showinfo("Folder Deleted!", "The selected folder has been deleted!")

Trong đoạn mã trên, hàm deleteAFolder(). Trong chức năng này, chúng tôi đã sử dụng phương thức askdirectory() để chọn thư mục. Phương thức rmdir() của mô-đun OS  được dùng để xóa thư mục khỏi thư mục. Phương thức showinfo() được sử dụng để hiển thị thông báo mong muốn trong File Explorer trong Python

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

8. Hàm di chuyển thư mục

# defining a function to move the folder
def moveAFolder():
    folderToMove = fd.askdirectory(title='Select the folder you want to move')
    mb.showinfo(message='Folder has been selected to move. Now, select the desired destination.')
    des = fd.askdirectory(title='Destination')
    try:
        # using the move() method of the shutil module to move the folder to the requested location
        shutil.move(folderToMove, des)
        mb.showinfo("Folder moved!", 'The selected folder has been moved to the desired Location')
    except:
        mb.showerror('Error!', 'The Folder cannot be moved. Make sure that the destination exists')

Trong đoạn mã trên, chúng ta đã định nghĩa hàm moveAFolder(). Trong chức năng này, chúng tôi đang sử dụng phương thức askdirectory() hai lần. Đầu tiên trong khi chọn thư mục từ thư mục bằng biến folderToMove và lần thứ hai trong khi di chuyển thư mục đến đích bằng biến des. Chúng tôi đang sử dụng phương thức try-ngoại trừ nơi chúng tôi đang sử dụng phương thức move() của thư viện Shutil nơi chúng tôi đã xác định phương thức di chuyển chứa nguồn và đích để di chuyển thư mục bằng cách sử dụng tệp python Explorer

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

9. Chức năng liệt kê tất cả các tệp trong thư mục

________số 8

Trong đoạn mã này, chúng ta đã định nghĩa hàm listFilesInFolder(). Trong chức năng này, chúng tôi đã sử dụng phương thức listdir() của mô-đun HĐH và lưu trữ danh sách các tệp trong các tệp biến. Chúng tôi đã tạo một cửa sổ bật lên hiển thị danh sách tất cả các tệp trong thư mục cụ thể mà chúng tôi đã sử dụng tiện ích Listbox() và phương thức place() để đặt danh sách ở bên phải bằng phương thức pack(). Hàm vòng lặp while lặp qua từng tệp và phương thức insert() để chèn thông tin chi tiết của tệp

đầu ra

Làm cách nào để chọn một tệp trong trình khám phá tệp bằng python?

10. Chức năng tạo nhãn cửa sổ chính và các nút cho File explorer trong Python

if __name__ == "__main__":
    # creating an object of the Tk() class
    win_root = Tk()
    win_root.title("File Explorer")
    win_root.geometry("400x600+650+250")
    win_root.resizable(0, 0)
    win_root.configure(bg="white")

    # creating the frames using the Frame()
    header_frame = Frame(win_root, bg="#D8E9E6")
    buttons_frame = Frame(win_root, bg="skyblue")

    # using the pack() method to place the frames in the window
    header_frame.pack(fill="both")
    buttons_frame.pack(expand=TRUE, fill="both")

    # creating a label using the Label() widget
    header_label = Label(
        header_frame,text="File Explorer",font=("Calibri", "16"),bg="white",fg="blue"
    )

    # using the pack() method to place the label in the window
    header_label.pack(expand=TRUE, fill="both", pady=12)

    # creating open button
    open_button = Button(
        buttons_frame,text="Open a File",font=("Calibri", "15"),width=20,bg="white",fg="blue",relief=GROOVE,
        activebackground="blue",command=openAFile
    )
    # rename button
    rename_button = Button(
        buttons_frame,
        text="Rename a File",font=("Calibri", "15"),width=20,bg="white",fg="blue",relief=GROOVE,
        activebackground="white",command=renameAFile
    )

    # copy button
    copy_button = Button(
        buttons_frame,text="Copy the File",font=("Calibri", "15"),width=20,bg="white",fg="blue",
        relief=GROOVE,activebackground="blue",command=copyAFile
    )

    # delete button
    delete_button = Button(
        buttons_frame,text="Delete a File",font=("Calibri", "15"),width=20,bg="white",fg="blue",
        relief=GROOVE,activebackground="white",command=deleteAFile
    )
   # open folder button
    open_folder_button = Button(
        buttons_frame,text="Open a Folder",font=("Calibri", "15"),width=20,bg="white",fg="Blue",
        relief=GROOVE,activebackground="blue",command=openAFolder
    )

    # delete folder button
    delete_folder_button = Button(
        buttons_frame,text="Delete Folder",font=("Calibri", "15"),width=20,bg="white",fg="blue",relief=GROOVE,
        activebackground="blue",command=deleteAFolder
    )

    # move folder button
    move_folder_button = Button(
        buttons_frame,text="Move the Folder",font=("Calibri", "15"),width=20,bg="white",fg="Blue",relief=GROOVE,
        activebackground="Blue",command=moveAFolder
    )
    # list all files button
    list_button = Button(
        buttons_frame,text="List files in Folder", font=("Calibri", "15"),width=20,bg="white",fg="Blue",relief=GROOVE,
        activebackground="Blue",command=listFilesInFolder
    )
    # create an object of Stringvar class
    fileNameEntered = StringVar()

    # use the pack method to place the buttons
    open_button.pack(pady=9)
    rename_button.pack(pady=9)
    copy_button.pack(pady=9)
    delete_button.pack(pady=9)
    move_folder_button.pack(pady=9)
    open_folder_button.pack(pady=9)
    delete_folder_button.pack(pady=9)
    list_button.pack(pady=10)
    win_root.mainloop()

Trong đoạn mã trên, chúng tôi đã xác định hàm main() bao gồm cửa sổ chính của tệp khám phá nơi chúng tôi đã xác định tiêu đề, kích thước và nền của cửa sổ. Chúng tôi đã xác định khung tiêu đề, nhãn tiêu đề và khung nút cũng như chỉ định phông chữ, kích thước, nền trước và màu nền. Chúng tôi cũng đã xác định các nút được cung cấp cho từng hoạt động của trình khám phá tệp và chỉ định chức năng mong muốn bằng cách sử dụng thuộc tính lệnh cho từng nút,

Chúng ta đã tạo đối tượng fileNameEntered của lớp StringVar() và hàm win_root, mainloop() để chạy ứng dụng python file explorer