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

利用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
分享到:
评论

相关推荐

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

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

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

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

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

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

    os.txt.rar_目录下文件名

    程序有一个参数。如果参数是一个文件名, 输出这个文件的大小和最后修改的时间,如果是一个目录,输出此目录下所有文件的大小和修改时间

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

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

    FileTime.rar_jpg_文件名

    我们从数码相机导出的照片一般都是以数字为文件名的,象100084.jpg等,我专门写了个软件把文件名改为以日期命名,可以通过文件修改日期或通过从图片中读取拍照日期两种方式命名文件。

    批量修改文件名脚本.rar

    批量修改文件名脚本。适用于window系统环境 ,使用时根据说明文件步骤操作。可实现批量修改文件或图片名称。

    获取文件名

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

    java压缩使用org.apache.tools.zip包解决中文文件名

    CSDN上很多资源都说可以解决中文问题,我下了很多个。都是不行。在一个博客上找到这个。可以用。 支持压缩整个文件夹。

    filename-reading.rar_reading_文件名

    用于读取文件夹内文件的文件名,基于VC++编写的。

    WINCC7.0sp2破解狗

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

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

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

    getfileattrib.rar_获取文件名

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

    shopex___学习资料

    推荐的文件名推荐的功能架构备注 article_details.dwt 显示文章类的详细页面 article_list.dwt 文章类的列表页 cart.dwt 购物车流程包裹页面 文件名不可更改 cartlist.dwt 购物车页面 文件名不可更改 error.dwt ...

    操作系统课程设计——文件管理系统

    一、课程设计题目和目的1二、课程设计要求1...重命名文件ren(文件名,新文件名)10(7) .查询文件属性ask(文件名)11(8) .关闭文件close(文件名)12五、程序运行结果及分析13六、课程设计总结15七、参考文献16八、附录17

    批量获取PPT文件名, 批量获取PPT文件名

    批量获取PPT文件名 批量获取PPT文件名 批量获取PPT文件名 批量获取PPT文件名 批量获取PPT文件名 批量获取PPT文件名 批量获取PPT文件名

    批量修改文件名v3.7.0缤纷软件.rar

    小伙伴们可以使用这款批量修改文件名同时修改多个文件的后缀名、批量修改文件名中指定的字符或是你可以指定删除某个位置的n个字符、批量替换文件名中的某些字符(多个文件中同时具有这个字符才可以)等。

    Java中文件选择器JFileChooser.showSaveDialog实现默认文件名的解决方案

    Java中文件选择器JFileChooser.showSaveDialog实现默认文件名的解决方案

    PHP获取当前执行php文件名的代码

    今天写表白墙时候的导航判断遇到的这个问题。我的解决思路是这样: 判断当前的php文件名来确定导航条的哪块高亮。 那php如何获取当前的url文件名呢? 我是这样处理的 :hushed_face: 教程 首先肯定是要获取当前页面...

    VB.Net设计:快速获取文件名

    VB.Net>共享一个我写的快速获取文件夹/文件名称程序代码。 详细情况请看: http://blog.csdn.net/linjimu/archive/2008/07/04/2610437.aspx

Global site tag (gtag.js) - Google Analytics