2013-06-27 4 views
0

3 개의 변수가 포함 된 실행할 파이썬 파일 (example.py)이 있습니다. 나는이 세 변수 각각의 값을 포함하는 세 개의 .txt 파일 (var1.txt, var2.txt, var3.txt)을 가지고 있습니다.배치 파일에서 파이썬 프로그램의 변수 값을 수정하십시오.

내가 텍스트 파일에서 세 개의 값을 검색하는 배치 파일 (bfile.bat)을 작성하려면, 는 파이썬 파일의 변수에 이러한 값을 전달하고 실행합니다.

도움이 될 것입니다.

-added-

감사합니다. 것은 세 파일에 대한 특별한 이유가 없습니다. ,

그래서 내 동료, 나는이 프로그램의 이름은 "program.py"라고합니다 , 를 파이썬에서이 프로그램 (나는 새도 오전) 쓴 그녀는 또한 어떻게 작동하는지 보여주기 위해 파일을 만든 program.py에서 사용되는 변수의 값을 설정함으로써; "example.py"입니다. 이 example.py는 program.py에서 사용되는 변수의 값을 포함합니다. 그러나 이러한 변수에 많은 값을 사용하고 싶습니다. 이렇게 배치 파일을 만들고 싶었습니다. 이는 분명 좋은 생각이 아닙니다.

그래서 example.py은 다음과 같이 보입니다 :

SOUND = 'sound.wav' 
TIMESTEP = 50 
END = 500 

program(SOUND, TIMESTEP, END) 

을하고 나는 소리, 시간 단계, END의 값을 변경하고 싶습니다. 도와주세요!

감사합니다.

+2

당신은 파이썬과 함께 텍스트 파일에서 값을 어떻게 얻을 수 있는가? – Paco

+0

나는이 문제를 가장 잘 이해하기 위해 파이썬에 익숙하지 않다! 고맙습니다. – hame

답변

1

sys.argv을 사용하여 파이썬 파일에 입력 매개 변수를 사용하는 것을 고려해야합니다. 그런 다음 bash 출력 파이프 라이닝을 사용하여 정보를 파이썬 스크립트로 파이프하십시오. 그러나 bash에서 python 파일을 수정하여 수정하는 것은 좋지 않습니다.

[또한, 왜 파이썬 파일을 읽을 수 없습니다?]

// 편집 : 새로운 정보에 대해서.

그래서 이미 파이썬 스크립트가 있으면이 문제를 여러 가지 방법으로 처리 할 수 ​​있으므로 이것이 가장 좋은 방법입니다.

우선 파이썬 스크립트는 다른 파이썬 스크립트 나 그 일부만 가져올 수 있습니다. 따라서 수행 할 수있는 작업은 import <function> from program 또는 import program입니다. 이제 그녀의 기능을 사용하여 자신의 파이썬 스크립트를 작성할 수 있습니다! 매개 변수 및 값 목록을 간단하게 만들 수 있습니다. 예를 튜플의 목록 :

import program 

# of course you can also generate this list, depeding on which couples of parameters 
# you want to run :) 
# this was hardcoding it for simplicity! 
myparams = [('sound1.wav', 30, 50), ('sound2.wav', 20, 100), ...] 

for (p1, p2, p3) in myparams: 
    program.function(p1, p2, p3) 

이것은 당신의 program.py 밖으로 function()을 사용합니다. 또한 프로그램을 가져 와서 sys.argv과 함께 스크립트를 작성하여 명령 줄 매개 변수 python myprogram.py p1 p2 p3을 사용하여 bash에서 실행할 수 있습니다. 그러나 질문을 살펴보면 Windows에서 작업하는 것처럼 보일뿐 아니라 간단한 파이썬 스크립트를 작성하는 것이 더 좋고/더 쉽고 편리 할 것입니다.하지만 그 문제에 대한 귀하의 경험에 달려 있습니다 :)

건배!

+0

나는 배치 파일 스크립팅과 파이썬 모두에 익숙하지 않으므로 이것을 수행 할 수있는 더 좋은 방법이 있다면 듣기에 행복하다. – hame

+0

@hame 글쎄, 당신이 우리에게 당신의 문제에 대해 더 많이 말한다면 가장 좋을 것이다. 가장 좋은 방법은 파이썬으로 파일을 읽는 것이다. 그런데 왜 3 개의 파일이 있습니까? 그것을 읽을 수 있습니까? – enpenax

+0

감사합니다. 원래 게시물에 추가 된 정보를 넣었습니다. – hame

0

전달 인수가 원하는 것을 성취하는 더 쉬운 방법이라고 생각됩니다. 그래서 그 대신 변수를 개최 파일을 사용하는 시도 :

import sys 

numArgs = len(sys.argv) 
# You want 3 variables, and the 0th index will be '[file].py'. 
if (numArgs >= 4): 
    SOUND = sys.argv[1] 
    TIMESTEP = sys.argv[2] 
    END = sys.argv[3] 
else: 
    print 'Not enough arguments.' 

그런 다음 당신은 간단하게 실행할 수 있습니다

python [file].py arg1 arg2 arg3 
+0

아하, sys.argv가 사용되는 방법입니다. 정보 주셔서 감사합니다!! :디 – hame

관련 문제