2017-05-18 1 views
0

미리 파일의 총 수를 지정하지 않고 np.load를 사용하여 폴더의 모든 파일을 읽으 려합니다. 현재 몇 루프가 지나면 인덱스에서 사용 가능한 파일 범위를 벗어나 코드가 종료됩니다.파일 인덱스가 사용 가능한 파일의 인덱스를 초과 할 때까지 루프 np.load를 사용하십시오.

index = 0 
    while True: 

     a = np.load(file=filepath + 'c_l' + pc_output_layer + '_s0_p' + str(index) + '.npy') 
     layer = np.append(layer, a) 
     index += 1 

오류가 발생할 때까지 계속로드하고 나머지 스크립트를 계속 실행할 수 있습니까? 고맙습니다!

답변

1

예외를 catch하고 루프에서 빠져 나올 수는 있지만 인덱스를 사용하는 대신 파일 이름을 반복하는 것이 더 '파이썬적인'방법 일 것입니다.

라이브러리를 사용하면 주어진 패턴과 일치하는 파일을 찾고 목록을 반환하여 반복 할 수 있습니다.

예컨대 :

import glob 
files = glob.glob(filepath + 'c_l*.npy') 

for f in files: 
    a = np.load(file=f) 
    layer = np.append(layer, a) 

또한 직접 지능형리스트를 사용하여 레이어를 생성하여 그것을 더 간단하게 할 수있다.

+1

항상 더 많은 파이썬 방법을 선호합니다. 감사! – Sumaku

관련 문제