【Python】(tkinter.filedialog)打开对话框选择文件夹、选择文件、保存文件

打开对话框选择文件夹

tkinter.filedialog.askdirectory()

返回:字符串。【选择文件夹,返回文件夹名(含路径) ;没有选择文件夹,返回空字符串】

打开对话框可能选择文件夹也可能没有选择文件夹,可以在函数里使用条件判断,若没有选择文件夹可以直接退出程序,选择文件夹则继续执行。

from tkinter.filedialog import askdirectory

def chooceFolder():
    """ 打开对话框选择文件夹,若没有选择文件夹,退出函数,若选择文件夹,继续执行 """
    afolder = askdirectory()
    if afolder == '': return
    print('已选择文件夹',afolder)

# 选择文件夹
chooceFolder()                        # 返回:已选择文件夹 E:/Program Files (x86)/python/libs

# 未选择文件夹
chooceFolder()                        # 返回:None,即无返回值

打开对话框选择文件

tkinter.filedialog.askopenfilename()   【选择一个文件】

返回:字符串。【选择文件,返回文件名(含路径含扩展名) ;没有选择文件,返回空字符串】

打开对话框可能选择文件也可能没有选择文件,可以在函数里使用条件判断,若没有选择文件可以直接退出程序,选择文件则继续执行。

from tkinter.filedialog import askopenfilename

def chooceFile():
    """ 打开对话框选择文件,若没有选择文件,退出函数,若选择文件,继续执行 """
    afile = askopenfilename()
    if afile == '': return
    print('已选择文件:',afile)

# 选择文件
chooceFile()                     # 返回:已选择文件: E:/Program Files (x86)/python/NEWS.txt

# 未选择文件
chooceFile()                     # 返回:None,即无返回值

可以选择文件类型,打开对话框后,可以通过文件类型更快选择需要的文件。

import tkinter

# 选择一种文件类型
afile = tkinter.filedialog.askopenfilename(filetypes=[('text files', '.txt')])

# 若一种文件类型有多个扩展名
afile = tkinter.filedialog.askopenfilename(filetypes=[('Microsoft Excel', ('.xls','.xlsx'))])

# 选择多个文件类型
afile = tkinter.filedialog.askopenfilename(filetypes=[('text files', '.txt'),('python files',('.py','.pyc'))])

tkinter.filedialog.askopenfilenames()   【选择多个文件】

返回:元组。

 

打开对话框保存文件

tkinter.filedialog.asksaveasfilename()

返回:字符串。【保存文件(注意输入扩展名),返回文件名(含路径) ;没有保存文件,返回空字符串】

# 举例:创建新的EXCEL工作簿,并保存
from tkinter.filedialog import asksaveasfilename
import openpyxl

wbook = openpyxl.Workbook()
afile = asksaveasfilename()
wbook.save(afile)

# 若保存对话框点击取消或者右上角关闭按钮,则报错如下
Traceback (most recent call last):
  File "", line 1, in 
    wbook.save(afile)
  File "E:\Program Files (x86)\python\lib\site-packages\openpyxl\workbook\workbook.py", line 407, in save
    save_workbook(self, filename)
  File "E:\Program Files (x86)\python\lib\site-packages\openpyxl\writer\excel.py", line 291, in save_workbook
    archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
  File "E:\Program Files (x86)\python\lib\zipfile.py", line 1249, in __init__
    self.fp = io.open(file, filemode)
FileNotFoundError: [Errno 2] No such file or directory: ''

若取消保存,后续在文件保存时会有报错,若一定要保存,可用while循环,直到保存为止。

若可以不保存,则尝试捕获异常处理。之前写过捕获异常的文章可以作为参考:【Python】捕获异常

from tkinter.filedialog import asksaveasfilename

def saveFile(obj):
    """ 打开对话框保存文件,若没有保存文件,循环提示直到保存,若保存文件,继续执行 """
    afile = asksaveasfilename()
    while afile == '': 
        afile = asksaveasfilename()
    obj.save(afile)
    print('已保存文件:',afile)


# 创建新的EXCEL工作簿,并保存
import openpyxl
wbook = openpyxl.Workbook()
saveFile(wbook)                             # 返回:已保存文件: G:/python/a.xlsx

你可能感兴趣的:(Python,笔记,python)