Python NameError: 이름 Execfile이 정의되지 않았습니다.

Fariba Laiq 2023년6월21일
  1. Python 3에서 execfile()의 대안
  2. exec()를 사용하여 Python 파일 실행
  3. with 블록을 사용하여 exec()를 사용하여 Python 파일 실행
Python NameError: 이름 Execfile이 정의되지 않았습니다.

Python 2에는 파일이 Python 문으로 구문 분석되고 평가되는 내장 함수 execfile()이 있습니다. 이 함수는 더 이상 Python 3에 없습니다.

이 기사는 Python 3에서 파일을 실행하는 것에 대한 가능한 대안을 보여줍니다.

Python 3에서 execfile()의 대안

Python 2에서는 함수 execfile()을 사용하여 파일을 실행합니다. Python 3에는 exec()라는 유사한 함수가 있습니다.

먼저 파일을 열고 읽고 exec() 함수의 인수로 전달합니다.

Python 3의 exec() 함수

Python exec() 함수는 문자열로 전달된 동적으로 생성된 코드 블록을 실행합니다.

일반 구문:

# Python 3.x
exec(object, global, local)

exec() 함수에는 세 개의 매개변수가 필요합니다.

  1. 객체는 문자열 또는 여러 줄 코드일 수 있습니다.
  2. 전역 매개변수는 사전일 수 있습니다.
  3. 로컬은 매핑 사전이 될 수 있습니다.

localglobal 매개변수는 모두 선택 사항입니다. 또한 exec()는 무효 함수이며 어떤 값도 반환하지 않습니다.

아래 코드는 이 함수의 기본 작업을 보여줍니다. "programming is fun"이라는 문자열이 다음 코드에 인쇄됩니다.

세 가지 수학 연산이 수행되고 exec() 함수에 개별적으로 전달됩니다.

마찬가지로 문자열에 여러 줄을 추가할 수 있으며 각 줄은 구문 분석되고 Python 문으로 간주되어 실행됩니다.

예제 코드:

# Python 3.x
exec('print("programming is fun")')
exec('x=4; y=9; print("Multiplication:", x*y)')
w = 200
exec("print(w == 200)")
exec("print(w / 100)")

출력:

programming is fun
Multiplication: 36
True
2.0

exec()를 사용하여 Python 파일 실행

이제 코드에서 외부 Python 파일을 실행하려면 먼저 파일을 열고 읽고 exec() 함수에 인수로 전달해야 합니다.

여기서 우리는 다음 코드를 포함하는 상대 디렉토리에 myfile.py 파일을 생성했습니다.

# Python 3.x
print("Delftstack")

Python 코드에서 이 파일을 실행하려면 먼저 open()을 사용하여 파일을 연 다음 read() 함수를 사용하여 읽고 마지막으로 exec() 함수를 사용하여 실행합니다.

예제 코드:

# Python 3.x
exec(open("myfile.py").read())

출력:

Delftstack

with 블록을 사용하여 exec()를 사용하여 Python 파일 실행

with 블록은 파일이 블록 끝에 도달하면 파일을 안전하게 닫아(자동으로) 파일이 열려 있지 않도록 합니다.

예제 코드:

# Python 3.x
with open("myfile.py", "r") as f:
    exec(f.read())

출력:

Delftstack
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

관련 문장 - Python Error