2017-04-12 3 views
0

this question에서 두 번째 대답을 사용하여 폴더를 삭제하려고합니다. 내 폴더에는 Thumbs.db가 포함 된 하위 폴더가 있습니다. 그래서 내가 얻을 오류 :python을 사용하여 thumbs.db를 어떻게 삭제합니까?

PermissionError : [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом : 'C : /foto/my_foto/Thumbs.db'

내가 시도 C : /foto/my_foto/Thumbs.db를 삭제하십시오.

어떻게하면이 파일을 삭제할 수 있습니까?

+0

명령 줄에서 python 스크립트를 실행하는 경우 "관리자 권한으로 실행"명령 프롬프트를 열고 python이 ide에서 실행중인 경우 관리자로 ide를 실행하고 스크립트를 실행하십시오. – Haranadh

+0

관리자 권한으로 명령 줄을 실행했지만 동일한 오류가 있습니다. = ( –

답변

2

다른 언어 (예 : c#, c++, java)와 동일합니다. 이는 언어가 아닌 OS에만 해당되므로 몇 가지 옵션이 있습니다

가, 마지막 하나는 불쾌한 부작용이없는 것입니다 :

간단히 말해서 올바른 방법은 방해가되고있는 프로그램을 중단하는 것입니다. 또는 프로그램에 잠긴 파일을 보관할 정당한 이유가있는 경우 디렉토리 사용 패턴을 다시 생각해보십시오.

+0

옵션 2에는 함정이 너무 많습니다. 즉각적인 문제가 발생해도 프로그램이 닫힌 핸들 값을 다시 사용하는 다른 파일을 열면 데이터가 손상 될 수 있습니다. 프로그램을 정상적으로 종료하는 것이 좋습니다. – eryksun

+0

@eryksun 무작위의 비 관련 프로세스를 죽이면 작업을 완전히 끝내지 못하게되고 핸들 만 닫으면 (아마도) 하나의 바람직하지 않은 작업이 종료됩니다. 'explorer'과 같은 프로세스 인 경우 살인은 옵션이 아닙니다. 핸들은 광범위하게 제안 된 방법입니다 (Unlocker와 같은 프로그램이이 용도로 특별히 작성되었습니다). 그래서 나는 그것을 언급해야했습니다 - 단점뿐 아니라. –

+1

나는 옵션 1과 3을 upvoted했습니다.) 솔루션을 사용할 수 있습니다. 프로그램을 죽이는 것에 대처하기 위해 강화 될 수 있습니다. 심지어는 WM_CLOSE 또는 WM_QUIT를 통해 정상적으로 종료 될 수도 있습니다. 콘솔 앱도 정상적으로 종료 될 수 있습니다 콘솔에 연결된 유일한 프로세스 인 경우에만 제어 처리기가 있으면됩니다. 그러나 핸들을 닫기 위해 몰래 움직이는 것은 프로그램이 합리적으로 기대해야하는 것은 아니며 핸들 값을 다시 사용할 때 데이터 손상을 초래할 수 있습니다. 이는 핸들을 닫은 사람의 잘못입니다. – eryksun

관련 문제