파이썬을 사용하여 특정 응용 프로그램에서 파일을 열어야합니다. 기본 앱 위치/파일 이름을 사용하여 파일을 열도록 기본값을 설정합니다. 그러나 응용 프로그램을 열 수없는 경우, 나는 그 오류를 처리하고 사용자에게 다른 옵션을 제공하고 싶습니다.파이썬에서 응용 프로그램을 열 때 오류 처리
지금까지 이해 한 것을 subprocess.call이 작업을 수행하는 가장 좋은 방법입니다,
응용 프로그램 system.os 반대로이 잘
작동 /Applications/GreatApp.app을
subprocess.call(['open','/Applications/GreatApp.app','placeholder.gap'])
그러나 try/except 루프를 추가하기 시작하면 아무것도 수행하지 않는 것 같습니다. 난 아직도 파이썬
The file /Applications/Great App.app does not exist.
가장 가까운 I '에 표시되는 다음과 같은 오류를 볼 수 있습니다
try:
subprocess.call(['open','/Applications/Great App.app','placeholder.gap'])
except:
print 'this is an error placeholder'
을 - (나는 예외를 강제로 잘못된 이름을 사용하고 응용 프로그램 이름의 공간을 참고) 오류 처리의 몇 가지 형태로 발견 한 것은 다음과 같습니다. 이것에 대해 올바른 방향으로 retcode의 가치를 찾고 있습니까?
try:
retcode = subprocess.call("open " + filename, shell=True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError, e:
print >>sys.stderr, "Execution failed:", e
는 모두 정확하고 잘못된 이름 값이 쇼를 무엇을 0보다 큰
그래을 변경 RETCODE 접근 방식은 올바른 것입니다. 아마도 마지막 코드 조각의'subprocess.call' 인수를 첫 번째 코드 조각과 바꿔보십시오. 'shell = True'는 간접적 인 수준이되고,'open'이 쉘 명령이 아니기 때문에 불필요합니다. – jtmoulia
확인해 주셔서 감사합니다. - 더 자세히 보았을 때 retcode <0 : retcode == 1 :로 설정하면 파일 이름/경로와 관련된 오류를 처리 할 수있었습니다. subprocess.call 반환 코드가 1 또는 0 만 반환한다고 가정합니다. (편집 : sp) – Simon
'subprocess.call()'의'args' 인수의 첫 번째 항목이 응용 프로그램이 아니어야합니까? – martineau