2014-09-17 2 views
1

다른 사용자 계정을 사용하는 작업 스케줄러에서 실행합니다. Windows에서 python 스크립트를 실행하고 os.unlink를 사용하여 파일을 삭제하려고 시도했지만 [ 오류 5] 액세스가 거부되었습니다.windows : python os.unlink raise OSError, [오류 5] 액세스가 거부되었습니다.

try: 
    os.unlink(file_path) 
except OSError as error: 
    logger.error('failed, error: {0}'.format(error)) 

2014년 9월 18일 03 : 53 : 44,023 - 오류 : 액세스가 거부 [5가 오류] : u'C : \ 경로 \ test.tgz '당신은 아마 스크립트와 실행이 arent

+0

은 명령 줄에서 사용할 수 있습니까? 백 슬래시 (ur'C : \ path \ test.tgz ', u'C : \\ path \\ test.tgz', u'C : /path/test.tgz '모두 작동 함)를 제대로 벗어 났습니까? – tdelaney

답변

1

이 스크립트는 작업 스케줄러에서 실행됩니다. 이 문제를 해결할 수있는 두 가지 옵션이 있습니다. 하나는 스크립트를 파일을 삭제할 수 있도록 사용자 계정에 폴더의 모든 권한을 부여하는 것입니다. 다른 하나는 작업 스케줄러에서 '가장 높은 권한으로 실행'을 선택하는 것입니다.

+0

UAC를 사용하는 경우 관리자에게 "최고 권한"이 적용됩니다. 이렇게하면 프로세스가 관리자에게 설정된 ACL에 액세스 할 수 있습니다. 제한된 사용자 (백그라운드 작업을위한'SeBatchLogonRight')는 여전히 폴더에 대한 삭제 권한을 부여 받아야합니다. 보조 노트에 – eryksun

0

관리자가 cmd를 "관리자 권한으로 실행"을 마우스 오른쪽 단추로 클릭하고 거기에 스크립트를 엽니 다

0

link() 메서드를 올바르게 호출하는 것으로 나타나지 않습니다. 첫째, 링크 방법은 Python 2.x에서 Windows에서 지원되지 않습니다. 3.2 이상에서만 사용할 수 있습니다. 더 많은 정보를 원하시면 다음을 참조하십시오 : 당신이 그 링크에 가면

, 당신은 당신이 적어도 2 개 인수를 제공 할 필요가 있음을 알 수 있습니다. 당신은 하나만 제공하고 있습니다.

오류 메시지가 표시되면 사용 권한 문제가 발생합니다. 관리자로 스크립트를 실행해야 할 수도 있습니다. 파일이 존재합니까? 그렇지 않은 경우 생성해야합니다. 또한 Windows에서 백 슬래시를 이스케이프 처리하거나 Python의 원시 문자열 (즉, r'C : \ path \ to \ file ')을 사용해야합니다.

+0

안녕 마이크, 파일의 링크 해제를 호출합니다. 오타였습니다. 내 잘못 – user2391685

2

사용 :

os.system('rmdir "%s"' % path_of_link_to_delete) 

이 나를 위해 일

+0

이 있으면 링크가 Windows 탐색기 창의 빠른 액세스 패널에 고정되어 있고 Windows 탐색기 창이 열려 있으면 심볼 링크를 연결 해제하려는 시도가 실패합니다. 모든 Windows 탐색기 창을 닫으면 '액세스 거부'오류가 발생합니다. – user2682863

관련 문제