文章目录
- 文件对话框
- 文件对象
- 文件类型
- 其他参数
tkinter系列:
- GUI初步💎布局💎绑定变量💎绑定事件💎消息框
- 扫雷小游戏💎强行表白神器
文件对话框
filedialog提供了多种与文件交互相关的对话框,包括文件对话框、文件夹对话框等。
函数 | 功能 | 返回值 | |
---|---|---|---|
askopenfile | 文件选择对话框 | 文件对象 | |
askopenfiles | 多文件选择对话框 | 文件对象列表 | |
askopenfilename | 文件选择对话框 | 文件名 | |
askopenfilenames | 多文件选择对话框 | 文件名列表 | |
asksaveasfile | 文件保存对话框 | 文件对象 | |
asksaveasfilename | 文件保存对话框 | 文件名 | |
askdirectory | 文件夹选择对话框 |
以askopenfile为例,其调用过程如下
from tkinter.filedialog import askopenfile
f = askopenfile()
文件对象
文件对话框的返回值是一个文件对象,功能相对来说比较完备,除用于关闭文件的close
之外,提供了两组最常用的函数,即读取和写入:read
和write
,其区别如下
读 | 写 | |
---|---|---|
read | write | 读写整个文件 read(size)可读取size大小的文件 |
readline | 每次读一行 由于write直接输入字符串,故不必设置writeline | |
readlines | writelines | 前者按行读取文件,并存入一个字符串列表 writelines将一个字符串列表的形式写入文件 |
关于文件对象更加具体的解读,可以看这篇:python中Open用法详解
但很多时候,我们并不希望直接操作文件对象,python很多模块对特定的文件类型提供了非常友好的api,为了更好地调用,可以通过f.name
查看文件名,然后用f.close()
函数将其关闭。
>>> f.name
'D:/Code/NotePL/python/aco_0.png'
>>> f.closed
False
>>> f.close()
>>> f.closed
True
当然,更好的办法是使用askopenfilename
,这样可以直接返回文件名。
文件类型
我们所熟知的文件对话框,往往会有数据类型限制,比如我只想读取txt文件或者png文件。这种只需设置filetypes参数就行了
from tkinter.filedialog import askopenfilename
askopenfilename(filetypes=[('图像文件', 'png'),( '图像文件', 'jpg'), ('文本文件', 'txt')])
其输入参数类型是元组列表,列表中的每一个元组都是文件类型+后缀的格式,相同的文件类型会合并到一起,如下图所示,图像文件后面跟了两种文件类型
其他参数
文件对话框还有如下参数
参数 | 备注 |
---|---|
defaultextension | 文件后缀,该后缀会自动添加 |
filetypes | 筛选文件类型的下拉菜单 |
initiadir | 默认路径(默认路径是当前文件夹) |
parent | 如果想让对话框显示在子窗口w上,可以设置parent=w |
title | 窗口标题 |
其中defaultextension非常常用,尤其是在保存文件时,可以直接保存为特定的文件类型。