2013-07-26 5 views
0

C : \ Desktop \ A에 python 스크립트 "cost_and_lead_time.py"가 있습니다. 이 스크립트는 폴더 A에있는 3 개의 다른 스크립트와 "cost_model.json"파일을 가져옵니다.다른 디렉토리에있는 py 스크립트를 실행중인 bat 파일

이제 시뮬레이션 결과가 C : \ Desktop \ Model \ Results입니다. C : \ Desktop \ A \ cost_and_lead_time.py 호출이 폴더에 한 줄 배치 파일이 있지만 cost_model.json 파일을 열려고하면 오류가 반환됩니다. json이 열리기 전에 나타나는 다른 스크립트 3 개를 가져 오는 데 문제가없는 것으로 보입니다.

제 질문은이 디렉토리에이 cost_model.json 파일을 보관하고 json 파일을 결과 폴더에 복사/붙여 넣기하지 않고 배치 파일을 통해 실행할 수있는 방법이 있습니까? 내가 생각할 수있는 유일한 방법은 파이썬 스크립트에서 파일의 전체 경로를 하드 코딩하는 것이지만, 이상적인 것은 아닙니다. Python 스크립트가 아니라 배치 파일에 추가 할 코드를 찾고 있습니다.

감사

+0

cost_model.json 파일을 어떻게 여는 중입니까? 현재 작업 디렉토리에 있다고 가정합니까? 그렇다면 수정하십시오. – martineau

+0

.BAT 코드를 알려주세요. 특히 파이썬 스크립트를로드 할 json 파일의 이름을 지정하는 방법을보고 싶습니다. –

답변

0

은 궁극적으로 당신이 처리 할 필요가있는 것을 스크립트를 알 수있는 방법이있을 필요가있다. 그 방법에는 여러 가지가 있지만 실제로는 그렇게해야합니다. 배치 파일에서 가장 확실한 것은 Python 스크립트를 실행하기 전에 대상 파일을 복사하는 것입니다.

그러나 더 깨끗한 해결책은 sys.argv를 통해 python 스크립트에 명령 줄 인수를 사용하여 처리해야하는 파일을 스크립트에 알려주는 것입니다.

1

'cd path'를 bat 파일에 넣거나 python 실행 파일에이 코드를 추가하십시오. os.chdir 전에 인수를 구문 분석하는 동안 스크립트에 전달

import os,sys 
path = os.path.abspath(os.path.dirname(__file__)) 
os.chdir(path) #for relative files 
sys.path.insert(0,path) #for modules load 

작업 파일의 경로는 os.path.abspath과에 rewrited해야합니다. 또는 chdir을 사용하지 않고 정적 경로를 다시 작성하지 마십시오

관련 문제