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

文章介绍了如何使用tkinter的filedialog模块来打开对话框,实现选择文件夹、选择单个文件、选择多个文件以及保存文件的功能。在每个操作中,都提到了当用户没有进行选择时的处理方法,如返回空字符串或使用条件判断退出程序。此外,还展示了如何限制文件类型的选择以及异常处理机制,确保文件保存操作的顺利完成。
摘要由CSDN通过智能技术生成

打开对话框选择文件夹

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 "<pyshell#63>", line 1, in <module>
    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yannan20190313

感谢您的支持。祝好心情。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值