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)
希望这能有所帮助。