Python版本:2.7 Tk版本:8.5
请参阅我之前的问题how to add the selected files from dialog window to a dictionary?
我正在尝试从对话框窗口中选择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 {}
任何解决方案?感谢。
答案 0 :(得分:2)
我想我可以看到问题出在哪里。我做了一些调试,发现返回到filez的数据类型是一个unicode字符串(你似乎期待一个列表或元组)。
您需要在循环之前转换它。如果您的文件名都不包含空格,那么这应该只是一个简单的问题:
file_list = files.split()
但是,如果不是这种情况,则上述操作无效,并且包含空格的文件名用大括号{}括起来。
根据this page,这实际上可能是一个错误。但是,还建议将字符串转换为元组:
file_list= master.tk.splitlist(filez)
希望这有帮助。