2013-07-19 2 views
1

호출 스크립트가 호출 된 스크립트의 네임 스페이스에 액세스 할 수 있다는 인상하에있었습니다. 다음은 호출 스크립트의 코드 섹션입니다.파이썬 : 호출 된 스크립트의 네임 스페이스에 액세스

x= 'python precision.py' 
args=shlex.split(x) 
print args 
p=subprocess.Popen(args) 
p.wait() 

result.write("\tprecision = "+str(precision)+", recall = ") 

여기서 "정밀도"는 호출 된 스크립트 "precision.py"의 변수입니다. 그러나 이것은 NameError를 제공합니다. 내가 어떻게 고칠 수 있니?

답변

1

액세스 할 수 없습니다. 스크립트의 마지막 줄에 도착했을 때 호출 된 스크립트는 실행을 마쳤습니다. 따라서 변수가 더 이상 존재하지 않습니다. 이 데이터를 호출 스크립트에 다른 방법으로 보내야합니다 (예 : 호출 된 스크립트가 표준 출력에 인쇄하고 호출하는 스크립트가 거기에서 가져 오는 것).

실행이 완료되지 않았더라도 변수에 액세스 할 수 있다고는 생각하지 않습니다. 즉, 귀하의 인상이 잘못되었습니다 :-)

+0

감사합니다 : 당신이 precision.py에서 변수를 원하는 경우 즉, 다음과 같은 일을 할 os.system()

같은 꽤 많이입니다 도움. – nish

+0

스크립트간에 변수 값을 전달할 수있는 방법을 알려주시겠습니까? 링크로 충분합니다. – nish

+0

다른 스크립트에서 한 스크립트의 변수에 액세스합니까? 그것은 불가능합니다. 호출자의 데이터를 명령 줄 인수를 사용하여 호출하거나 stdout을 사용하여 반대 방향으로 데이터를 파이핑하여 호출자에게 전달할 수 있습니다. 이 작업을 수행 할 때 Python 관련 기능은별로 없습니다. –

1

subprocess.Popen() 명령을 실행하고 표준 출력에서 ​​읽고 표준 입력에 쓸 수 있습니다. popen 프로세스와 통신하지 않고 프로세스가 완료 될 때까지 기다리는 것은 의미가 없습니다. 없는 내부 클래스를 어떤 문을 실행 수단을 가져 물론

import precision 

print "precision variable value =", precision.precision 

나에 대한 def

관련 문제