-
[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
6. Modules — Python 3.9.1 documentation
6. Modules If you quit from the Python interpreter and enter it again, the definitions you have made (functions and variables) are lost. Therefore, if you want to write a somewhat longer program, you are better off using a text editor to prepare the input
docs.python.org
'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