폴더를 만들고 출력 파일을 저장하는 코드가 있습니다. try-except-else 블록과 덮어 쓰기 옵션을 사용하여 True 또는 False로 설정할 수 있으므로 폴더가 이미 있고 덮어 쓰기가 false로 설정된 경우 폴더가 이미 존재 함을 표시합니다. 다른 모든 경우에는 주석없이 실행됩니다.파이썬에서 try-except-else로 덮어 쓰기를 제어하는 좀 더 우아한 방법이 있습니까? 또는 C 스타일 코드보다 더 잘할 수 있습니까?
def function(parameters, overwrite = False):
try:
os.makedirs(dir)
except OSError:
if overwrite:
data making code...
else:
print dir + ' already exists, skipping...'
else:
if overwrite:
data making code...
어쩌면이 문제에 대한 더 나은, 아니면 그냥 더 우아한 해결책이 :
내가 지금까지 함께 왔어요 유일한 해결책은 다음과 같습니다? 예를 들어, 데이터 작성 코드를 복제 할 필요가없는 코드처럼? 이 방법을 사용하면 C에서 몇 가지 사항을 작성해야하는 스타일이 너무 많이 떠오르며 매우 Pythonic하지 않습니다.
문제는 디렉토리의 제작에서 분리, 나는 = True로 덮어 쓰기) 일 경우 실행 코드 블록을 필요로한다는 것이다 2) 디렉토리했다 원래 존재하지 않는다. else 블록없이 두 경우 모두 어떻게 처리합니까? – tel
@tel : try/except 코드 다음에 그 코드를 넣으십시오. 그런 다음 인쇄 후 'return' 문을 이미 존재하는지 확인하십시오. 그렇게하면,'os.makedirs'가 성공하거나 덮어 쓰기가 True이면 결과물이 출력됩니다. –
'errno'를 검사하는 대신'os.path.exists (path)'를 사용하는 것이 어떻습니까? – Apalala