利用tkFileDialog.askopenfilenames获取多个文件名
by cnDenis http://cndenis.iteye.com 2012年12月27日
用Python写小脚本,要选择文件,最简单的方式莫过于使用内置的Tk的控件了。如果需要同时选择多个文件,可以使用tkFileDialog.askopenfilenames
,如下:
|
#!/usr/bin/python
import tkFileDialog
fns = tkFileDialog.askopenfilenames(filetypes=[("text file", "*.txt"),("all","*.*")])
print(repr(fns))
|
但问题是,在Python 2.6以后的版本,tkFileDialog.askopenfilenames
返回的居然是字符串,类似于这样:
|
u'C:/Python27/LICENSE.txt C:/Python27/NEWS.txt C:/Python27/README.txt'
|
如果每个文件的路径中都没有空格,用fps.split()
就可以分解字符串得到文件名的列表,如果文件名或文件路径中包含空格,这个字符串将很不好解析。解决方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/usr/bin/python
import Tkinter
import tkFileDialog
import os
master = Tkinter.Tk()
master.withdraw() # 不显示界面主窗口
fnstr = tkFileDialog.askopenfilenames(filetypes=[("text file", "*.txt"),("all","*.*")])
fns = master.tk.splitlist(fnstr) # 把多个文件名字符串分割成元组
print(repr(fns))
|
这样得到的就是元组了,
|
('C:/Python27/LICENSE.txt', 'C:/Python27/NEWS.txt', 'C:/Python27/README.txt')
|
然后就可以用for
得到每个文件名了。
如果文件名中包含中文,Tkinter.Tk.tk.splitlist
分割完后的文件名可能会不能用,需要先把文件名encode
后传进去,分割完再decode
。代码如下:
|
import sys
sysencode = sys.getfilesystemencoding()
fnsen = fnstr.encode(sysencode)
fnss = master.tk.splitlist(fnsen)
fns = [unicode(f, encoding=sysencode) for f in fnss]
|
这样就可以了。
以上内容参考了:Parsing the results of askopenfilenames()? 和 tkinter - askopenfilenames returns string instead of tuple in windows 2.6.1 release
分享到:
相关推荐
解决这个问题的方法是使用 email 附件名编码方法对文件名进行编码。可以使用 javax.mail.internet.* 包的 MimeUtility.encodeWord("中文.txt") 方法进行编码。例如: response.setHeader("Content-Disposition", ...
而这个“批量修改文件名脚本”很可能是一个批处理文件(.bat),它利用了Windows内置的命令行工具来实现文件名的批量更改。 批处理脚本的工作原理是通过一系列命令行指令,如REN(rename)命令,来实现文件的重命名...
这些函数允许程序员遍历指定路径下的所有文件和子目录,并获取每个文件或目录的详细信息,包括文件名。在VC++中,可以使用这些API函数通过调用系统函数的方式实现文件名的读取。 以下是一个简单的示例,展示了如何...
选择文件夹提取文件名 VB程序,可以获取无后缀文件名 也可以获取带后缀文件名 ,两种选择,供您选择——大吉利祝您工作愉快~~
本文将深入探讨"SimilarFileFind v1.3.930"这一版本的功能、工作原理以及如何有效地利用它来查找和管理相似文件名。 "SimilarFileFind"是一款专门用于查找并管理电脑中具有相似名称的文件的实用软件。它的主要功能...
bat命令,可以获取文件夹下所有文件的名字含后缀,也可以获取指定后缀的文件名,另存为LIST文本文件,非常方便好用的bat命令
标题中的"IIS短文件名漏洞利用工具"指向的是一个针对微软Internet Information Services(IIS)服务器的安全漏洞。IIS是Windows操作系统中广泛使用的Web服务器,它处理HTTP、HTTPS和其他网络协议,为用户提供网页...
2. **遍历文件夹**:通过`Dir`函数读取第一个匹配`.doc`后缀的文件名,然后进入一个循环,该循环将持续执行直到没有更多的文件被找到。在这个过程中,每找到一个文件,就将其文件名添加到`Arr`数组中。 3. **输出...
6. **批量修改文件名工具**:"批量修改文件名.exe" 这个文件可能是一个可执行程序,用于执行上述操作。这类工具通常具有用户友好的界面,允许用户选择待处理的文件夹,设定命名规则,然后一键应用。它们可能还支持...
功能:1.获取指定文件夹下所有文件名。2.穿透子文件夹。...“批量获取文件名.exe”打开软件(可能自动安装.net库)。2.视情况勾选“是否搜索子文件夹”。3.点击唯一的按钮,选择位置。4.等待结果表格自动打开。
CSDN上很多资源都说可以解决中文问题,我下了很多个。都是不行。在一个博客上找到这个。可以用。 支持压缩整个文件夹。
开始一个新项目,准备用wincc7.0做,自己下载了一个wincc 7.0 sp2,可惜装好后一直弹出对话框说只能用硬狗。网上找到一个破解办法,目前用得还不错,分享给大家 具体操作方法如下: C:\Program Files\Siemens\winCC...
本篇文章主要介绍了如何利用Python语言,根据多个文件名批量查找文件,并将找到的文件复制到指定的目录中。这个过程涉及到Python基础库如os, numpy, pandas以及shutil的使用,并结合循环、条件判断等基础编程概念,...
在C#编程中,获取系统字体名及其对应的字体文件名是一项常见的任务,特别是在涉及到文本渲染、界面设计或者自定义字体管理的场景下。系统中的字体是操作系统提供的资源,可以通过编程接口来访问这些信息。以下是对这...
Linux系统中获取路径的文件名的方法 Linux系统中获取路径的文件名有多种方法,以下是其中的两种常见方法: 1. 使用basename命令 basename命令可以将路径中的文件名提取出来,例如: [root@dabu.info ]#basename ...
windows:获取文件夹下所有的文件名
引入了using System.IO 需要用到 FileInfo 类。 FileInfo 类用于提供创建、复制、删除、移动和打开文件的实例方法,并且帮助...获取文件名、文件长度、获取当前 FileSystemInfo 对象的创建时间、写入时间、访问时间。
标题中的“获取当前文件夹的文件名.rar”指的是一个压缩包,其中包含了一个批处理(.bat)文件,专门用于获取并记录指定文件夹内的所有文件名称。这种批处理脚本在Windows操作系统环境下运行,是一种简单的自动化...
一、课程设计题目和目的1二、课程设计要求1...重命名文件ren(文件名,新文件名)10(7) .查询文件属性ask(文件名)11(8) .关闭文件close(文件名)12五、程序运行结果及分析13六、课程设计总结15七、参考文献16八、附录17
命令行工具TimeBack.exe获取和更改文件的创建、修改、访问时间 TimeBack 1.0 文件时间控制 作者:Xinje E-mail:xinje@126.com 2010.6.16 /F [文件名] 设置欲更改或查看文件时间的文件名。 /T [日期时间] 欲更改的...