1

메모리에 파일을 읽지 않고 잠재적 인 경쟁 조건을 피하면서 파일이 있는지 확인하는 방법이 있습니까?Python : 파일 열기없이 경쟁 조건을 피하면서 파일 존재 여부 확인

나는 경쟁 조건을 피하기 위해 시도/캐치를 사용하는 예를 본 적이 있지만 그들은 모두 같은 것을 함께 메모리에 파일을 읽을 : I가 필요로하는

with open filename as file 

내가 큰 파일 (약 100MB의)이 의 존재를 확인하지만, 보안을 위해, 확인하는 동안 경쟁 조건을 만드는 것을 피하고 싶습니다. 전체 파일을 메모리로 읽는 것은 비실용적입니다. 내가 어떻게 생각하지 않니?

나는 아주 편안하고 상냥합니다.

+0

고전적인 os.path.exists? 어쨌든, 시도/잡아과 오픈과 함께 파일을 읽지 마세요, 그냥 핸들이나 FileNotFoundError – cox

+0

피하기 위해 노력하고있는 경쟁 조건을 명확히 할 수 있습니까? 파일을 읽고 os.path.exists()가 true를 반환하고 파일을 삭제했기 때문에 열기가 실패하는 사이의 경쟁 조건을 피하기 위해 언급 한 관용구의 주된 이유는 – Foon

+0

고마워요! 나는 "열린 상태로"전체 파일을 메모리로 읽어 들이기 전에, 내가 틀렸다는 것을 깨달았습니다. – TheFunk

답변

1

경쟁 조건 회피의 전체 목적 엄격 그래서 파일이 열려있는 것을 검사 한 파일입니다 이다. 다른 하나없이 하나를 가지고 시도하는 것은 아닌 sequitur입니다.

또한, open()은 파일을 메모리로 읽지 않으므로, 질문의 일부가 처음부터 의미가 없습니다.

+0

open()이 파일을 전체적으로 메모리에 읽는 것이 내 이슈였습니다. 당신은 그것을하지 않는다는 것을 말하고 있습니다. 즉, 내가 먹었던 100MB RAM에 대한 두려움없이 내가 본 try/catch 방법을 사용할 수 있다는 것을 의미합니다. 그것은 내가 어쨌든 의미했던 것입니다. 명확히 해 주셔서 감사합니다! – TheFunk