Open Pin-Jiun opened 1 year ago
可以用 tkinter 中的 tkinter.tkFileDialog() 打開選取檔案和目錄的視窗
打開可以選取檔案的視窗,並回傳檔案的路徑
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
print(file_path)
tkinter filedialog 判斷開啟檔案對話框回傳的檔案
通常程式會需要去判斷使用者是否選擇了一個合法的檔案或者是取消動作根本沒選檔案, 這邊示範最簡單的方法是接著判斷檔案是否為空,不為空的話才繼續做接下來的程式邏輯, filedialog.askopenfilename() 會回傳的類型為 str,若取消的話會回傳一個空的 tuple (),
filedialog 想要設定一些提示訊息在開啟檔案對話框的標題,來提示使用者到底要開什麼檔案的話, 可以在 filedialog.askopenfilename() 參數裡指定 title,
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(parent=root,
title='Select file')
不同的作業系統對路徑的語法有不同的規定,在Linux與Mac OS中,採用斜線(/)符號來分隔目錄與子目錄,而在Windows中,則是使用反斜線(\)符號來分隔。此外,在Linux中只有單一的根目錄;而在Windows中,每一台磁碟機都是一個獨立的根目錄(例如:A:\ 、C:\ 、D:\等)。
如果想要讓所有作業系統中都能執行,在程式設計時就要處理這兩種狀況。
幸運的是,Python提供了相關函式以方便程式來指定檔案路徑,而不必擔心系統的差異。例如使用os.path.join()函式來處理,os.path.join()會返回檔案路徑的字串,而且會以系統正確的分隔符號來分割資料夾和檔名。可以在不同的作業系統中試試下面的程式碼:
import os
os.path.join('product','men','clothes')
os.path模組裡面有很多與檔案名稱和檔案的路徑有關的函式。因為os.path是os模組裡面的模組,只需要import os到py檔案裡面就可以使用了。我們可以使用os.path來取得路徑名稱。
如果要建立路徑的話,可以使用os.path.join()。記得我們在前面曾經提過os.path會依照目前正在使用的作業系統以系統正確的分隔符號來分割資料夾和檔名。無論是使用哪一個作業系統,os.path.join()都不會檢查參數是否合法。因此在使用時,最好是自己寫一個函式來檢查路徑的合法性。
os.path.join()
前面已經提過,os.path.join()會返回檔案路徑的字串,而且以系統正確的分隔符號來分隔資料夾與檔名。此外,如果想要為檔案建立字串的話,使用os.path.join()會相對方便:
files = ["index.html","main.css","main.js"]
for filename in files:
print(os.path.join("new_project", filename))
我們可以用下面方式取得目前工作目錄下面的特定資料夾:下面程式碼可以取得目前工作目錄下面csv資料夾中的所有檔案名稱。
url = os.path.join(os.curdir,'csv')
os.listdir(url)
Python pathlib 模組取得當前路徑的方法
這邊介紹 Python pathlib 模組取得當前路徑的方法,使用 pathlib.Path().absolute() 可以取得當前目錄的絕對路徑,程式碼如下,
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pathlib
print(pathlib.Path().absolute())
To create a new file in Python, use the open() method, with one of the following parameters:
"x" - Create - will create a file, returns an error if the file exist
"a" - Append - will create a file if the specified file does not exist
"w" - Write - will create a file if the specified file does not exist
The syntax is used to open multiple files