Python에서 continue와 pass의 차이점


우선 continue는 for문, if문 같은 곳에서 사용 시 다음 루프로 넘기는 역할을 합니다.

pass는 아무 역할 없이 단순히 코드 진행을 하게 됩니다.


아래 코드를 실행해보면 좀 더 이해가 쉽습니다.


for x in range(1, 6):

    if x:

        print "x is %d" % x

        pass

    print "Pass"


for y in range(1, 6):

    print "continue_before"

    if y:

        print "y is %d" % y

        continue

    print "continue_after"


그리고 아래 결과는 아래와 같습니다.


x is 1

Pass

x is 2

Pass

x is 3

Pass

x is 4

Pass

x is 5

Pass

continue_before

y is 1

continue_before

y is 2

continue_before

y is 3

continue_before

y is 4

continue_before

y is 5


pass를 사용한 for문에서는 pass가 있는듯, 없는듯 loop가 돌아가는 것을 볼 수 있습니다.

반면, continue를 사용한 for문에서는 continue_after가 실행되지 않고 있습니다.

즉, continue문이 실행되는 순간 다음 loop로 넘어가버리므로 실행되지 않게 됩니다.


그럼 이 쓸모없어 보이는 pass문은 어디에 쓰냐면 python에서는 에러관리를 위해 try: except: 문을 사용합니다.

이때 에러가 발생하더라도 계속 코드를 진행시키기 위해 except:문에서 pass를 사용하는 경우가 많습니다.


이전 포스팅([Language/Python] - Python shutil copytree 사용 파일 복사)에서는 shutil을 이용하여

경로 중간의 폴더가 없더라도 생성해가며 해당 경로로 파일을 복사하는 방법이었습니다.


이번 방법은 파일 복사가 아닌 중간 경로의 폴더가 존재하지 않더라도 생성해가면서 경로를 완성하는 방법입니다.

예를 들어 os.mkdir로 C:\test\test1\test2\test3라는 경로가 필요한데 test1, test2라는 중간 경로의 폴더가 없다면, 

'WindowsError: [Error 3] : '경로''에러가 발생합니다.



이 경우 os.makedirs()를 사용한다면, 경로를 따라가면서 폴더를 생성하게 됩니다.


사용 라이브러리 : os > makedirs


import os


os.makedirs("C:\\test\\test1\\test2")



  1. 2016.06.13 09:29

    비밀댓글입니다



가끔 파일 복사를 해야할 때 C:\test에 있는 모든 파일을 D:\copy\copy1\copy2로 옮기고 싶은데 \copy\copy1\copy2의 경로가 없을 때가 있습니다.

즉, 폴더가 없다면 생성해가면서 지정된 위치로 파일을 복사하는 방법입니다.


사용 라이브러리 : shutil > copytree


import shutil


shutil.copytree(src, dst, symlink=False, ignore=None)


예제 :


import shutil


shutil.copytree('C:\\srcfolder', 'D:\\dstfolder\\folder1\\folder2\\folder3')


결과 :


텍스트로 출력되는 결과가 아니라 제대로 보여드리긴 어렵지만 위 처럼 folder1,2,3이 순차적으로 생성되고,

c:\srcfolder에 있는 파일들이 모두 복사가 됩니다.


주의할 점은 폴더 경로 작성 시 백슬래시(\) 한 개가 아닌 2개(\\)를 써줘야 경로를 제대로 인식합니다.

* 개발 언어 : Python 2.7

* 개발 기간 : 2014-12-19

* 개발 목적 : 동일한 파일이 존재하는지 파일명을 변경하여 파악

* 프로그램 설명 : 지정한 폴더의 모든 파일들을 MD5 해쉬시킨 값을 파일명으로 만들어 중복파일 검사

* 버전 히스토리 :

1.0 : MD5해쉬 및 파일 이름 변경 등 기본 기능만 넣고 마무리

1.1 : 작업 완료 후 실패한 파일 목록 출력하도록 추가

1.2 : 작업위치를 절대/상대 경로로 사용자에게 입력받아 지정할 수 있도록 추가

1.3 : 변수명 알기 쉽도록 변경, 변경 작업 시 확장자 소문자로 일괄 변환

1.4 : 오류 번호를 구분하여 에러 메시지 출력

 

 

 

* 프로그램 작동 모습

1) 작업할 폴더 지정 (절대/상대 경로)

 

 

 2) 파일명 변경 모습, 에러 발생 시 원인 출력 (사진은 한 번 변경했던 파일들이라 변경 전/후가 같음)

 

 

3) 작업 완료 시 작업 결과 출력

 

 

4) 파이썬 파일을 클릭하여 바로 CMD로 실행될 때를 위해 작업 결과 출력 후 PAUSE

 

 

 

* 참고 사이트

파일 해시방법
http://joelverhagen.com/blog/2011/02/md5-hash-of-file-in-python/

 

확장자 가져오기
http://lapee79.blogspot.kr/2013/08/python-strings.html
http://yeongeon.tistory.com/58

 

os모듈 설명
http://devanix.tistory.com/304

 

예외처리
https://wikidocs.net/30

 

문자열 출력방법
http://mwultong.blogspot.com/2006/12/python-print-string-number-variable.html

 

파일 입/출력 방법
https://wikidocs.net/26

 

입력과 출력 input() / print()
https://wikidocs.net/25

파이썬 input()과 raw_input()의 차이

http://pwnbit.kr/21

 

 

 

* 제작 결과물 

File Name Hasher 1.4.py

 

나, 혹은 다른 사람이 봐도 최대한 코드 이해가 쉽도록

주석을 과도하다 싶을 정도로 넣었고, 코드도 줄여쓰는걸 자제함..

 

 

사실 다른 사람이 본다기보다 내가 나중에 까먹기 때문에 주석으로 떡칠함..

더 추가할 기능은 없을듯..

이 코드를 응용하면 일괄적으로 파일명을 바꿔야할 때 써먹을 수 있음

(즉, 쓸데 없는 프로그램)

 






+ Recent posts