Python版本:2.7 Tk版本:8.5
参考我之前的问题如何将对话框窗口中选定的文件添加到字典中?
我正在尝试从对话框窗口中选择 500 个文件并提取它们的名称作为字典的键。文件总大小约为200M。
我不知道为什么我得到一本空字典。但是,如果我每次选择较少的文件(例如 100 个),则每次效果都很好。所以我的问题是,对话框窗口选择文件或字典中的键是否有数量限制?
sys.path.append("C:\MY PATH")
os.environ['PATH']+=";C:\MY PATH"
print "Please select your txt files in the dialog window >>"
filez = tkFileDialog.askopenfilenames(parent=root,multiple='multiple',title='Choose a file',filetypes=[('txt file','.txt'),('All files','.*')])
mydict = {}
for FilenameWithPath in filez:
path, Filename = os.path.split(str(FilenameWithPath))
## Filename = sys.path.basename(FilenameWithPath)
mydict[Filename] = len(mydict)
print "mydict " + str(mydict)
print "\n"
如果我选择所有 500 个文件,它只会给出
mydict {}
有什么解决办法吗?谢谢。
我想我可以看出问题出在哪里。我做了一些调试,发现返回到 filez 的数据类型是 unicode 字符串(您似乎期望的是列表或元组)。
您需要在循环之前对其进行转换。如果您的文件名都不包含空格,那么这应该只是一个简单的问题:
file_list = files.split()
但是,如果不是这种情况,则上述方法将不起作用,并且包含空格的文件名会用大括号 {} 括起来。
根据,这实际上可能是一个错误这一页。但是,还建议采取一种解决方法,将字符串转换为元组:
file_list= master.tk.splitlist(filez)
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)