2017-10-26 1 views
1

.NET 버전에는 similar question이 있지만 파이썬 os.walk 함수에 대해 특별히 묻습니다. 최신 Python 3을 사용하고 있습니다.os.walk에서 검사중인 파일이 실행 중에 변경되면 어떻게됩니까?

많은 파일이있는 디렉토리가 있다고 가정합니다. 각 파일에 잠시 걸리는 작업을 수행 중이므로 root 디렉토리가 다른 프로세스에서 중간 단계로 변경 될 수 있습니다. 여기에 명확성을 위하여, 예를 들어 다음과 같습니다

for root, dirs, files in os.walk(rootDirectory): 
    for file in files: 
     doAReallyLongBlockingCall(file) 

os.walk 이러한 변화를 감지시겠습니까? 파일을 추가하면 os.walk으로 찾을 수 있습니까?

+0

시도해보십시오. 다중 처리 또는 스레딩을 사용하여 파일 만들기 하나의 프로세스/스레드가있는 트리에서 다른 프로세스/스레드와 함께 트리를 이동하십시오. 어떻게 된 거예요? 어떤 랜덤'time.sleep()'을 던져라. 그 둘이 끝난 후에 나무를 걷고 결과를 비교하십시오. – wwii

답변

1

이 데이터가 루프에

그렇다면 당신의 손에서 변경되지 않습니다 os.walk에 대해 정말하지 않습니다하지만 당신이 디렉토리를 열고 일단 OS가 리눅스에 을 수행하는 (즉에 대한 콜이) 파일을 열고 10 분 동안 처리하면 처리되지 않은 파일 중 하나가 삭제됩니다. opendir이 나열되지 않은 채 생성 된 파일과 이름도 계속 표시됩니다.

사례 처리에는 예외가 필요합니다. 파일을 잃기 전에 잃어 버렸을 때

관련 문제