반응형
출처 : https://stackoverflow.com/questions/21268470/making-python-2-7-code-run-with-python-2-6/
Python 2.7 코드를 Python 2.6에서도 작동하게 만들기
저는 zip 파일을 풀 수 있는 간단한 Python 함수를 만들었습니다. (플랫폼 독립적으로)
def unzip(source, target):
with zipfile.ZipFile(source , "r") as z:
z.extractall(target)
print "Extracted : " + source + " to: " + target
이는 Python 2.7에서는 잘 실행되지만 Python 2.6에서는 실패합니다.
AttributeError: ZipFile instance has no attribute '__exit__':
저는 2.6에서 2.7로 업그레이드 할 것을 제안한 글을 찾았습니다.
https://bugs.launchpad.net/horizon/+bug/955994
하지만 위의 코드를 Python 2.6에서 작동할 수 있도록 플랫폼에 관계없이 이식이 가능한가요??
2개의 답변 중 1 개의 답변만 추려냄.
다음 코드는 어떻습니까?
import contextlib
def unzip(source, target):
with contextlib.closing(zipfile.ZipFile(source , "r")) as z:
z.extractall(target)
print "Extracted : " + source + " to: " + target
contextlib.closing
는 ZipFile
에서 빠져있는 __exit__
메소드가 하려고 했던 것을 분명히 실행합니다. 이름처럼 close
메소드를 호출합니다.
반응형
'Python' 카테고리의 다른 글
Python3에서 sys.stdout 인코딩 하는 방법 (0) | 2019.04.05 |
---|---|
tf.placeholder와 tf.Variable의 차이점은 무엇입니까? (0) | 2019.03.25 |
부모 프로세스가 죽을 때 subprocess.check_output()로 생성된 Python 자식 프로세스를 죽이는 방법? (0) | 2019.02.21 |
nonblocking 방법으로 subprocess의 출력을 읽는 방법 (0) | 2019.02.21 |
CentOS 6.8에서 pip 설치하는 방법 (0) | 2018.08.29 |