我正在编写一个读取确定文件的函数,这种情况下,用户可以选择他想要读取的文件。
import os
import pprint as p
path = "C:\Users\cgr02\Documents\Py"
listname = {}
for root, dirs, files in os.walk(path):
for filename in files:
if filename.endswith(".xlsx"):
ob = listanome.setdefault(filename, dict({'FILE': filename}))
p.pprint (listname)
输出:
'19-10-2017.xlsx': {'FILE': '19-10-2017.xlsx'},
'19-11-2017.xlsx': {'FILE': '19-11-2017.xlsx'},
'20-06-2017.xlsx': {'FILE': '20-06-2017.xlsx'},
'20-07-2017.xlsx': {'FILE': '20-07-2017.xlsx'},
'20-08-2017.xlsx': {'FILE': '20-08-2017.xlsx'},
'20-09-2017.xlsx': {'FILE': '20-09-2017.xlsx'},
'20-10-2017.xlsx': {'FILE': '20-10-2017.xlsx'},
用户期望看到的内容:
'1': {'File': '20-10-2017.xlsx'},
'2': {'File': '20-09-2017.xlsx'},
'3': {'File': '20-08-2017.xlsx'},
'4': {'File': '20-12-2017.xlsx'},
'5': {'File': '20-11-2017.xlsx'},
我不知道这是否是在屏幕上显示和操纵用户选择的更好方式。使用列表会更好吗?
答案 0 :(得分:1)
是的,你可以简单地使用一个列表。使用列表推导也可以使这比使用dict.setdefault
更直接。
例如:
import os
path = ...
files = [filename for root, dirs, files in os.walk(path)
for filename in files
if filename.endswith(".xlsx")]
然后使用enumerate
和print
代替pprint
:
for idx, file in enumerate(files, 1): # enumeration, starting with 1 instead of 0
print(idx, file)
请注意,您可能应存储root
和dirs
,以防您确实需要再次找到“已选择”文件。