对话框选择文件的数量限制?


问题内容

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)

希望这可以帮助。