IDLE 대화 형 쉘에서 파이썬 스크립트를 실행하는 방법은 무엇입니까?


102

IDLE 대화 형 쉘 내에서 파이썬 스크립트를 어떻게 실행합니까?

다음은 오류를 발생시킵니다.

>>> python helloworld.py
SyntaxError: invalid syntax

어떻게 helloworld.py생겼습니까?
TerryA

네 코드에 문제가 있음을 의미합니다. 코드를 게시하십시오!
시리얼

12
아니요, 반드시 그런 것은 아닙니다. OP가 python helloworld.pyIDLE 셸 창에 입력 되고 작동하지 않을 가능성이 있습니다.
네드 Deily

표준 인터프리터에서도 작동하지 않습니다. 이 문제는 사람들이 통역사 프롬프트가 명령 줄 프롬프트라고 잘못 생각하기 전에 발생했습니다.
Terry Jan Reedy 2015 년

네드 딜리가 당신의 질문에 올바르게 대답한다면 그 대답을 받아 들여야합니다. 이것은 또한 동료 개발자들이 정답을 빨리 찾는 데 도움이 될 것입니다.
Krishna Oza

답변:


141

Python3 :

exec(open('helloworld.py').read())

파일이 동일한 디렉토리에없는 경우 :

exec(open('./app/filename.py').read())

전역 / 로컬 변수 전달에 대해서는 https://stackoverflow.com/a/437857/739577 을 참조 하십시오 .


사용되지 않는 Python 버전

Python2 내장 함수 : execfile

execfile('helloworld.py')

일반적으로 인수로 호출 할 수 없습니다. 그러나 여기에 해결 방법이 있습니다.

import sys
sys.argv = ['helloworld.py', 'arg']  # argv[0] should still be the script name
execfile('helloworld.py')

2.6부터 폐지 : popen

import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout

인수 포함 :

os.popen('python helloworld.py arg').read()

사전 사용 : 하위 프로세스

import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout

인수 포함 :

subprocess.call(['python', 'helloworld.py', 'arg'])

자세한 내용은 문서를 읽으십시오 :-)


이 기본으로 테스트되었습니다 helloworld.py.

import sys
if len(sys.argv) > 1:
    print(sys.argv[1])

2
명령 줄 인수로 예제를 추가해 주시겠습니까?
ViFI

1
명시 적으로 파이썬 버전을 지정하지 않은 Python3와 아스 커와 함께 작동하지 않습니다
Suncatcher

추가 execPython3 위해
Fontenelle Hugues

35

python3에서 이것을 사용할 수 있습니다.

exec(open(filename).read())

24

IDLE 셸 창은 터미널 셸 (예 : 실행 중 sh또는 bash) 과 동일하지 않습니다 . 오히려 파이썬 대화 형 인터프리터 ( python -i) 에있는 것과 같습니다 . IDLE에서 스크립트를 실행하는 가장 쉬운 방법 OpenFile메뉴 의 명령 (실행중인 플랫폼에 따라 약간 다를 수 있음)을 사용하여 스크립트 파일을 IDLE 편집기 창에로드 한 다음 Run-> Run Module명령 (바로 가기 F5).


1
그러나 인수를 전달할 수 없습니다. :(
에리카 케인

3
불행히도 아니요, 명령 줄 인수를 전달하는 동안 IDLE에서 Python 파일을 실행하는 것은 쉽지 않습니다. IDLE에 대해 오랫동안 공개 된 문제가 있습니다 ( bugs.python.org/issue5680 ). 테스트를위한 한 가지 해결 방법 sys.argv은 프로그램의 맨 처음에 (예 : 일반적인 if __name__ == "__main__"상용구 에서) 수동으로 초기화 하는 것 입니다.
네드 Deily

이 답변은 IDLE 셸을 사용하여 Python 스크립트를 실행할 수없는 이유를 설명합니다. 덕분에 @NedDeily
arsho

1
IDLE 3.7.4부터 이제 인수를 사용하여 모듈을 실행할 수 있습니다. 새 Run-> Run with Customized...명령 (단축키 Shift + F5)을 사용하면 인수를 제공 할 수있는 팝업이 열립니다. 불행히도 현재 그것들을 기억하지 못하기 때문에 매번 실행할 때마다 붙여 넣을 것입니다.
Dan Nolan

6

이 시도

import os
import subprocess

DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')

subprocess.call(['python', DIR])

4

execFile('helloworld.py')나를 위해 일을합니다. 주의 할 점은 Python 폴더 자체에없는 경우 .py 파일의 전체 디렉터리 이름을 입력하는 것입니다 (최소한 Windows의 경우).

예를 들면 execFile('C:/helloworld.py')


4

가장 쉬운 방법

python -i helloworld.py  #Python 2

python3 -i helloworld.py #Python 3

2

예를 들면 :

import subprocess

subprocess.call("C:\helloworld.py")

subprocess.call(["python", "-h"])

2
subprocess.call(r'c:\path\to\something.py')나를 위해 작동하지 않습니다. OSError : [WinError 193] % 1은 (는) 유효한 Win32 응용 프로그램이 아닙니다
Terry Jan Reedy

이 import os import subprocess DIR = os.path.join ( 'C : \\', 'Users', 'Sergey', 'Desktop', 'a.py') subprocess.call ([ 'python', DIR] )
Sergey Nosov 2015 년

1

Python 3에는 execFile. exec내장 함수를 사용할 수 있습니다 . 예를 들면 다음과 같습니다.

import helloworld
exec('helloworld')

1

IDLE에서는 다음과 같은 작품이 있습니다.

import helloworld

왜 작동하는지 잘 모르겠지만 ..


당신이하고있는 일은 쉘에서 실행되지 않는 모듈을로드하는 것입니다. 둘 사이의 한 가지 차이점은 다음과 같습니다. 1) 모듈 이름 이름 __ = 파일 이름 2) 셸에서 실행 모듈 이름 _name __ = " _main "
tanweer alam

실제로 가져오고 실행하지 않기 때문에 프로그램을 실행하는 좋은 방법이 아닙니다. 콘텐츠를 가져 오며 사용하지 않으려면 의미가 없습니다.
Abhijeet.py

1

Idle과 같은 Python 셸 또는 Django 셸에서 python 스크립트를 실행하려면 exec () 함수를 사용하여 다음을 수행 할 수 있습니다. Exec ()은 코드 객체 인수를 실행합니다. Python의 코드 객체는 단순히 컴파일 된 Python 코드입니다. 따라서 먼저 스크립트 파일을 컴파일 한 다음 exec ()를 사용하여 실행해야합니다. 쉘에서 :

>>>file_to_compile = open('/path/to/your/file.py').read()
>>>code_object = compile(file_to_compile, '<string>', 'exec')
>>>exec(code_object)

Python 3.4를 사용하고 있습니다. 자세한 정보는 컴파일exec 문서를 참조하십시오.


1

나는 이것을 테스트했고 약간 작동합니다.

exec(open('filename').read())  # Don't forget to put the filename between ' '

견적 팁에 감사드립니다. 찬성.
Forever Learner

1

두 가지 방법으로 할 수 있습니다

  • import file_name

  • exec(open('file_name').read())

그러나 프로그램이 실행되는 곳에 파일을 저장해야합니다.


0

Windows 환경에서는 다음 구문을 사용하여 Python3 셸 명령 줄에서 py 파일을 실행할 수 있습니다.

exec (open ( 'file_name의 절대 경로') .read ())

아래는 파이썬 셸 명령 줄에서 간단한 helloworld.py 파일을 실행하는 방법을 설명합니다.

파일 위치 : C : /Users/testuser/testfolder/helloworld.py

파일 내용 : print ( "hello world")

다음과 같이 Python3.7 Shell에서이 파일을 실행할 수 있습니다.

>>> import os
>>> abs_path = 'C://Users/testuser/testfolder'
>>> os.chdir(abs_path)
>>> os.getcwd()
'C:\\Users\\testuser\\testfolder'

>>> exec(open("helloworld.py").read())
hello world

>>> exec(open("C:\\Users\\testuser\\testfolder\\helloworld.py").read())
hello world

>>> os.path.abspath("helloworld.py")
'C:\\Users\\testuser\\testfolder\\helloworld.py'
>>> import helloworld
hello world

실행하기 위해 프로그램을 가져 오는 것은 좋은 선택이 아닙니다. 처음에는 사용했지만 이제는 프로그램을 가져 오기 때문에 프로그램의 효율성을 떨어 뜨리는 것과 같은 잠재적 인 문제에 대해 알고 있습니다 (무시할지라도).
Abhijeet.py

0

대안이 하나 더 있습니다 (Windows 용)-

    import os
    os.system('py "<path of program with extension>"')

0

파이썬 콘솔에서 다음 두 가지 방법을 시도 할 수 있습니다.

동일한 작업 디렉토리에서

1. >> helloworld 가져 오기

# 변수 x 가 있으면 IDLE로 인쇄 할 수 있습니다.

>> helloworld.x

# func 함수가 있으면 다음 과 같이 호출 할 수도 있습니다.

>> helloworld.func ()

2. >> runfile ( "./ helloworld.py")

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.