1
터미널

내가 내일 CodeForces 경쟁에 참여하고, 그리고 규칙은 파이썬은 (% 1이 파일 이름) 다음 줄 컴파일 말 : 나는 테스트를 컴파일하려고파이썬 컴파일

python -c "compile(open('%1').read(), '%1', 'exec')" 

이 라인에 파일을하지만, 전혀 아무것도하지 않습니다 나는 python test.py

로 컴파일 할 때

import sys 
a = sys.stdin.readline() 
sys.stdout.write(a) 

그러나 프로그램이 내가이 테스트 파일 WO을 만들 수 있습니다 어떻게 작동 위의 컴파일 라인과 rk?

EDIT : 저는 Mac에서 터미널을 사용하고 있습니다.

+0

% 1을 어떻게 지정합니까? –

+0

'% 1'은 컴파일 할 파일 이름입니다. 나는'% 1'을'test.py'로 대체했습니다. –

답변

4

대화 형 인터프리터를 시도하는 경우에 당신은 무슨 일이 일어나고 있는지 볼 수 있습니다

>>> compile(open('test.py').read(), 'read.py', 'exec') 
<code object <module> at 0x10b916130, file "read.py", line 1> 

compile built-in 코드 객체로 소스 라인을 컴파일합니다. 실제로 코드 개체를 실행하려면 exec 필요 그것은 :

>>> codeobj = compile(open('test.py').read(), 'read.py', 'exec') 
>>> exec(codeobj) 
Hello, world! 
Hello, world! 
>>> 

여기 파이썬 2와 파이썬 3 사이에 약간의 차이가하는 것으로, 주로 그 exec이 Py2의 문하지만 Py3에 내장 된 기능입니다 . 위의 두 가지 중 하나에서 작동합니다.

+0

[다음은 참조 할 문서 링크입니다.] (https://docs.python.org/2/library/functions.html?highlight=compile#compile) –

관련 문제