2017-12-28 9 views
-4

나는 결정적인 파일을 읽는 함수를 작성하고있다.이 경우 사용자는 읽고 자하는 파일을 선택할 수있다.Building Python Dict

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'}, 

을 나는이 화면에 표시하고 사용자의 선택을 조작 할 수있는 더 좋은 방법이 있는지 알고 해달라고 . 목록을 사용하는 것이 더 좋을까요?

답변

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) 

참고가 아마이 경우에 rootdirs을 저장해야합니다 당신은 실제로 찾을 필요 "선택한 파일"을 다시 선택하십시오.

+0

이것은 대단합니다. 그것에 대해 알지 못했지만, 어떻게 그것을 사전에 추가합니까? "추가"하시겠습니까? – TMoraes

+0

이 솔루션은 어떤 사전을 사용하지 않고 계속 사용 하시겠습니까? – MSeifert

+0

예를 들어, 사용자가 선택한 파일 이름을 복구하려면 어떻게해야합니까? 내 생각에, idx에 의해 나는 파일 이름 + 경로를 얻을 수 있었다. 어떻게 생각하니? – TMoraes