1

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 {}

有什么解决办法吗?谢谢。

4

1 回答 1

2

我想我可以看到问题出在哪里。我做了一些调试,发现返回到 filez 的数据类型是一个 unicode 字符串(您似乎期待一个列表或元组)。

您需要在循环之前转换它。如果您的文件名都不包含空格,这应该只是一个简单的问题:

file_list = files.split()

但是,如果不是这种情况,则上述内容将不起作用,并且包含空格的文件名用花括号 {} 括起来。

根据此页面,这实际上可能是一个错误。但是,还建议将字符串转换为元组:

file_list=  master.tk.splitlist(filez)

希望这可以帮助。

于 2013-07-25T17:31:46.573 回答