linux
  • python-2.7
  • 2012-10-05 4 views 2 likes 
    2

    저는 리눅스 명령 행에서 다른 스크립트를 호출하는 데 사용되는 문자열을 궁극적으로 생성하는 기본 Python 스크립트를 작성하고 있습니다. 예를 들어Python 스크립트 출력 인수 템플릿

    :

    inputFile = "loadsOfData.csv" 
    outputFile = "results.txt" 
    doThis = "-p" 
    doThat = '-a" 
    
    
    scriptCommand = "./myscript" + " " + inputFile + " " + outputFile + " " + doThis + " " + doThat 
    
    os.system(scriptCommand) 
    

    향후 변경 될 수 있습니다 명령 줄 인수의 순서, 그리고 생성되는 사항에 대한 검사를 할 수 있습니다.

    인자의 형식을 변경하고 정확성을 보장하는 템플릿을 지정하는 Python에는 어떤 방법이 있습니까?

    실제 예제에는 이보다 훨씬 많은 parms가 있으므로 scriptCommand에 복사하여 붙여 넣기보다는 스크립트 맨 위에서 편집 할 수있는 일부 템플릿으로 주문을 지정할 수 있으면 좋을 것입니다. .... 그것이 변하면.

    P. 실제 args는 argv를 포함한 다른 곳에서 왔기 때문에 내 예제처럼 하드 코딩되지 않았습니다.

    +0

    하면 OS '를 대체하기위한 상기 [구성 프로세스 (http://docs.python.org/library/subprocess.html) 모듈을 사용한다. 시스템 '. 그것은 명령과 인자를 가진 목록을 받아들입니다 : 당신은 단지 그 목록을 동적으로 만들 수 있고 적절한'subprocess' 함수에 그것을 전달할 수 있습니다. –

    답변

    2

    파이썬 string formatting을 사용해야합니다. 이 같은 파일의 상단에 사용할 형식 정의 : 당신은, 말, 필요한 경우 모든 scriptCommand에서 -p 앞에 나타나 -a 가지고

    commandFormat = "./myscript {0} {1} {2} {3}" 
    inputFile = "loadsOfData.csv" 
    outputFile = "results.txt" 
    doThis = "-p" 
    doThat = "-a" 
    scriptCommand = commandFormat.format(inputFile, outputFile, doThis, doThat) 
    print scriptCommand 
    
    >>> './myscript loadsOfData.csv results.txt -p -a' 
    

    을의의 번호 순서 변경 이 commandFormat = "./myscript {0} {1} {3} {2}" 출력 등 commandFormat 변수가 될 것이다 :

    >>> './myscript loadsOfData.csv results.txt -a -p' 
    
    관련 문제