2013-09-06 2 views
1

파이썬 2.6.6에 완벽하게 실행하는 다음 코드를했다 : 나는 다음과 같은 오류가 나는 파이썬 2.4.3에서 실행하려고 할 때, 그러나임시 파일 구문 2.4.3

import tempfile 
with tempfile.NamedTemporaryFile() as scriptfile: 
     scriptfile.write(<variablename>) 
     scriptfile.flush() 
     subprocess.call(['/bin/bash', scriptfile.name]) 

를 얻을 :

File "<stdin>", line 2 
    with tempfile.NamedTemporaryFile() as scriptfile 
       ^
SyntaxError: invalid syntax 

Python 2.4.3에서 구문이 변경 되었습니까?

+1

'with' 문은 py2.5 +에서만 사용할 수 있습니다 –

답변

1

파이썬 2.4는 with 문을 지원하지 않습니다. 따라서 수동으로 scriptfile을 열고 닫아야합니다.

scriptfile = tempfile.NamedTemporaryFile() 

# whatever you need to do with `scriptfile` 

scriptfile.close() 
+0

당신도 구문을 포함시킬 수 있습니까? – rahuL

+1

'try :','finally :'는'with' 행동을 맞추는데 도움이 될 것입니다. –

0

The with-statementfrom __future__ import with_statement를 사용하는 경우에만 파이썬 2.5부터 가능하며 파이썬 2.6부터 기본적으로 활성화되어 있습니다.

동작을 에뮬레이트하려면 try/finally 사용할 수 있습니다

#!/usr/bin/env python2.4 
import subprocess 
import tempfile 

scriptfile = tempfile.NamedTemporaryFile() 
try: 
    scriptfile.write(<variablename>) 
    scriptfile.flush() 
    subprocess.call(['/bin/bash', scriptfile.name]) 
finally: 
    scriptfile.close() 

을 BTW, 당신은 디스크에있는 파일을 생성 피할 수있는 파이프를 통해 스크립트를 전달하여 :

from subprocess import Popen, PIPE 

p = Popen('/bin/bash', stdin=PIPE) 
p.communicate(<variablename>) 

는 약간의 차이가 있습니다 그러나 그것은 당신의 경우에 그대로 작동 할 것입니다.