2017-05-11 4 views
0

폴더에서 생성 된 일부 파일을 처리하려고하는데 때로는 파일을 열 때 python이 나를 반환합니다. [Errno 13] : 사용 권한이 거부되었습니다. 나는 단순히Python [Errno 13] 일부 이미지를 열 때 사용 권한이 거부되었습니다.

file = open(file_path, 'rb') 

모두의 이상한하고 있어요

시대의 대부분의 파일이 제대로 열리지 및 오류가 일부 특정 파일 (여러 번 테스트)와 관련이없는 것입니다. 이미 file_path 형식을 변경하려고했지만 효과가 없습니다.

저는 파일 생성 이벤트를위한 디렉토리를보기 위해 파이썬 3.5와 워치 독 라이브러리를 사용하고 있습니다. 그런 다음 이벤트의 src_path를 가져 와서 엽니 다. 또한 Windows 10에서 실행 중입니다.

+0

같은 파일을 열려고 할 때 오류가 발생하는 경우가 있지만 때로는 작동합니까? 그러한 불확실성은 다른 곳에서 이미 열려있는 파일을 열려고 시도했을 때 발생할 수 있습니다 ... –

+0

'''''''''대부분의 시간''... 오류를 복제하고 어떻게 도움이 될까요? 너, 심지어 당신이 성공적으로 오류를 재현 할 수 없다면? [최소, 완전하며 검증 가능한 예제] (https://stackoverflow.com/help/mcve) –

+0

@Rightleg를 제공하십시오. 그러나 코드를 다시 실행하고 오류를 일으킨 파일을 열려고하면 작동합니다. 그리고 파일은 생성시 트리거되므로 코드에서 한 번만 열립니다. – Bruno

답변

1

코드에 문제가있는 것 같습니다. 앞서 언급했듯이, watchdog lib를 사용하여 파일 생성을 감지했으며,이 경우 생성 된 파일을 열었습니다. 문제는 파일 생성이 이동/붙여 넣기/생성이 완료 될 때 발생하지 않지만 처음 몇 바이트가 디렉토리로 이동했기 때문입니다. 그래서 문제는 내가 "creation"프로세스가 끝나기 전에 파일을 열려고 시도했기 때문에 여전히 쓰여지고있었습니다.

완성 된 쓰기 이벤트를 얻는 방법을 찾았지만 watchdog lib에는이 기능이 없으므로 완성 된 쓰기 이벤트는 Linux 전용 기능인 것처럼 보입니다.

그래서 타이머 스레드를 통해 파일을 열기 전에 잠시 기다렸다가 새 파일에 대한 즉각적인 조치가 필요하지 않고 거대한 파일을 처리 할 필요가 없으므로 꽤 잘 작동하는 것 같습니다.