`
cnDenis
  • 浏览: 100453 次
  • 来自: 广州
社区版块
存档分类
最新评论

利用tkFileDialog.askopenfilenames获取多个文件名

阅读更多

利用tkFileDialog.askopenfilenames获取多个文件名

by cnDenis http://cndenis.iteye.com 2012年12月27日

用Python写小脚本,要选择文件,最简单的方式莫过于使用内置的Tk的控件了。如果需要同时选择多个文件,可以使用tkFileDialog.askopenfilenames,如下:

1
2
3
4
#!/usr/bin/python
import tkFileDialog
fns = tkFileDialog.askopenfilenames(filetypes=[("text file", "*.txt"),("all","*.*")])
print(repr(fns))

但问题是,在Python 2.6以后的版本,tkFileDialog.askopenfilenames返回的居然是字符串,类似于这样:

1
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))

这样得到的就是元组了,

1
('C:/Python27/LICENSE.txt', 'C:/Python27/NEWS.txt', 'C:/Python27/README.txt')

然后就可以用for得到每个文件名了。

如果文件名中包含中文,Tkinter.Tk.tk.splitlist分割完后的文件名可能会不能用,需要先把文件名encode后传进去,分割完再decode。代码如下:

1
2
3
4
5
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

 

0
5
分享到:
评论

相关推荐

    VBA-025.获取多层文件夹下文件名并创建超链接

    VBA-025.获取多层文件夹下文件名并创建超链接

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    解决这个问题的方法是使用 email 附件名编码方法对文件名进行编码。可以使用 javax.mail.internet.* 包的 MimeUtility.encodeWord("中文.txt") 方法进行编码。例如: response.setHeader("Content-Disposition", ...

    FileTime.rar_jpg_文件名

    这个压缩包可能包含了一个或多个以日期命名的图片文件,这些文件原本可能以数字序列作为文件名,如100084.jpg,现在已被重命名为反映其拍摄日期的形式。 描述中提到的要点有: 1. **数字文件名**: 数码相机通常会...

    VBA-022.批量获取指定文件夹下文件名并创建超链接

    VBA-022.批量获取指定文件夹下文件名并创建超链接

    批量修改文件名脚本.rar

    而这个“批量修改文件名脚本”很可能是一个批处理文件(.bat),它利用了Windows内置的命令行工具来实现文件名的批量更改。 批处理脚本的工作原理是通过一系列命令行指令,如REN(rename)命令,来实现文件的重命名...

    filename-reading.rar_reading_文件名

    这些函数允许程序员遍历指定路径下的所有文件和子目录,并获取每个文件或目录的详细信息,包括文件名。在VC++中,可以使用这些API函数通过调用系统函数的方式实现文件名的读取。 以下是一个简单的示例,展示了如何...

    提取文件名 VB获取无后缀文件名 VB获取有后缀文件名

    选择文件夹提取文件名 VB程序,可以获取无后缀文件名 也可以获取带后缀文件名 ,两种选择,供您选择——大吉利祝您工作愉快~~

    SimilarFileFind-v1.3.930亿愿相似文件名查找.7z

    本文将深入探讨"SimilarFileFind v1.3.930"这一版本的功能、工作原理以及如何有效地利用它来查找和管理相似文件名。 "SimilarFileFind"是一款专门用于查找并管理电脑中具有相似名称的文件的实用软件。它的主要功能...

    getName.bat获取目录下的所有文件名

    bat命令,可以获取文件夹下所有文件的名字含后缀,也可以获取指定后缀的文件名,另存为LIST文本文件,非常方便好用的bat命令

    IIS短文件名漏洞利用工具.zip

    标题中的"IIS短文件名漏洞利用工具"指向的是一个针对微软Internet Information Services(IIS)服务器的安全漏洞。IIS是Windows操作系统中广泛使用的Web服务器,它处理HTTP、HTTPS和其他网络协议,为用户提供网页...

    获取批量Word文件名,并批量删除其中的分隔符

    2. **遍历文件夹**:通过`Dir`函数读取第一个匹配`.doc`后缀的文件名,然后进入一个循环,该循环将持续执行直到没有更多的文件被找到。在这个过程中,每找到一个文件,就将其文件名添加到`Arr`数组中。 3. **输出...

    批量修改文件名工具.rar

    6. **批量修改文件名工具**:"批量修改文件名.exe" 这个文件可能是一个可执行程序,用于执行上述操作。这类工具通常具有用户友好的界面,允许用户选择待处理的文件夹,设定命名规则,然后一键应用。它们可能还支持...

    获取文件名

    功能:1.获取指定文件夹下所有文件名。2.穿透子文件夹。...“批量获取文件名.exe”打开软件(可能自动安装.net库)。2.视情况勾选“是否搜索子文件夹”。3.点击唯一的按钮,选择位置。4.等待结果表格自动打开。

    WINCC7.0sp2破解狗

    开始一个新项目,准备用wincc7.0做,自己下载了一个wincc 7.0 sp2,可惜装好后一直弹出对话框说只能用硬狗。网上找到一个破解办法,目前用得还不错,分享给大家 具体操作方法如下: C:\Program Files\Siemens\winCC...

    python根据多个文件名批量查找文件

    本篇文章主要介绍了如何利用Python语言,根据多个文件名批量查找文件,并将找到的文件复制到指定的目录中。这个过程涉及到Python基础库如os, numpy, pandas以及shutil的使用,并结合循环、条件判断等基础编程概念,...

    C# 获取系统字体名 和 对应字体的文件名

    在C#编程中,获取系统字体名及其对应的字体文件名是一项常见的任务,特别是在涉及到文本渲染、界面设计或者自定义字体管理的场景下。系统中的字体是操作系统提供的资源,可以通过编程接口来访问这些信息。以下是对这...

    获取当前文件夹的文件名.rar

    本文将深入探讨如何利用一个简单的批处理脚本快速准确地获取当前文件夹中的所有文件名,并将结果保存到文本文件中。通过这种方法,我们可以节省大量手动输入文件名的时间,并减少因手动操作而产生的错误。 首先,...

    Linux系统中获取路径的文件名的方法.docx

    Linux系统中获取路径的文件名的方法 Linux系统中获取路径的文件名有多种方法,以下是其中的两种常见方法: 1. 使用basename命令 basename命令可以将路径中的文件名提取出来,例如: [root@dabu.info ]#basename ...

    文件名.bat(获取文件夹下所有文件名)

    windows:获取文件夹下所有的文件名

    getfileattrib.rar_获取文件名

    引入了using System.IO 需要用到 FileInfo 类。 FileInfo 类用于提供创建、复制、删除、移动和打开文件的实例方法,并且帮助...获取文件名、文件长度、获取当前 FileSystemInfo 对象的创建时间、写入时间、访问时间。

Global site tag (gtag.js) - Google Analytics