-
[import] 폴더 안의 스크립트 임포트하기Python 2020. 12. 16. 21:43
일반적으로 폴더에 코드를 정리해놓고 불러다 쓰려면 from folder import script를 하면 된다.
폴더가 여러 개 있거나, 여러 파일에서 코드를 임포트하려면 디렉토리 사이를 .으로 연결하면 된다.
폴더 구조가 아래와 같이 되어있을 때, main.py에서 f~의 파일들을 임포트하는 경우:
더보기위의 폴더구조 생성할 때 사용한 코드
import os path = os.getcwd() for i in range(1,4): p1 = path + '/' + 'f' + str(i) os.mkdir(p1) for j in range(1,4): p2 = p1 + '/' + 'f' + str(j) os.mkdir(p2) for k in range(1,4): p3 = p2 + '/' + 'm' + str(k) + '.py' with open(p3, "a+", encoding="UTF-8") as t: t.write(f"print('f{i}/f{j}/m{k}.py')")
f1/f2/m2.py를 임포트하려면 이렇게 된다.
from f1.f2 import m2 # f1/f2/m2.py
from 없이 import에 위치를 명시해주어도 된다. as는 옵션이지만 f3.f2.m2처럼 쓰고 싶지 않다면 as를 쓰는 것도 괜찮다.
import f3.f2.m2 as m2 # f3/f2/m2.py
여러 파일을 임포트하고 싶다면
from f1.f2 import m1, m2, m3 ''' f1/f2/m1.py f1/f2/m2.py f1/f2/m3.py '''
혹시 as로 rename 하고 싶다면 하나씩 해주면 된다.
from f1.f2 import m1 as mod1, m2 as mod2, m3 as mod3
python3.3 이전 버전에서는 m1.py처럼 대상 스크립트가 있는 위치에 __init__.py를 같이 두어야 패키지로 인식했으나
이후에는 없어도 잘 동작한다고 한다.
나는 python3.7.4 버전 사용 중이어서 __init__.py 없이 진행했다.
docs.python.org/3/tutorial/modules.html
'Python' 카테고리의 다른 글
[인코딩] 유니코드 인코딩 처리 (특히 json 입출력 시) (1) 2020.12.28 [datetime] 시간포맷: datetime.strftime("%Y-%m-%d") (0) 2020.12.18 [pip] pip search error: xmlrpc.client.Fault: <Fault -32500: 'RuntimeError> (0) 2020.12.17 [Python] right shift와 powerSet (0) 2020.05.17