2013-03-28 5 views
1

다음 코드가 있습니다.명령 인수를 사용하여 함수 호출

import os, fnmatch, sys 
print ("HERE") 
def test(arg): 
    print ("arg" + arg) 

가 어떻게 명령 줄에서 스크립트를 실행할 때 기능 test를 호출 가겠어요 ?

답변

2

파이썬에서 명령 줄 옵션을 얻는 가장 간단한 방법은 sys.argv입니다. 이 명령 행 옵션은 배열 형식으로 저장됩니다.

인수 인쇄는 매우 간단합니다.

import sys 
print(str(sys.argv)) 

이 스크립트에 다음 명령 줄을 실행 할 경우 python test.py arg1 arg2 arg3 그것은 인쇄 할을 ['test.py', 'arg1', 'arg2', 'arg3']

당신은 당신의 함수를 호출 구축이를 사용할 수 있습니다. 하지만, 우리가 작성한 내용을 통해 알 수 있듯이, 여러분의 주장뿐만 아니라 우리가 실행 한 파일의 이름도 포함하고 있습니다. 이 때문에 우리는 먼저 사용자가 파일 이름 외에도 최소한 하나의 인수를 제공했는지 확인해야합니다.

len을 사용합니다.

import sys 
if len(sys.argv) > 1: 
    print(sys.argv[1]) 

그러면이 함수를 사용하여 첫 번째 인수를 인쇄 할 수 있습니다.


당신이 바람직 인수를 구문 분석 OptionParser 같은 것을 사용하는 것이 명령 줄에서 기능 test를 호출 실행하려면

import sys 
def test(arg): 
    print ("arg" + arg) 
if len(sys.argv) > 1: 
    test(sys.argv[1]) 

. OptionParser은 더 이상 사용되지 않으며 ArgParse을 대신 사용해야합니다.

이것은 OptionParser 및 사용자 기능을 사용하는 작동 예제입니다. 당신이 응용 프로그램을 실행할 때

from optparse import OptionParser 

# Options/Args 
parser = OptionParser() 

# Add Options 
parser.add_option("-t", "--test", dest="test") 

# Parse the Options 
(options, args) = parser.parse_args() 
usage = "usage: %prog [options] arg" 
parser = OptionParser(usage) 

print ("HERE") 
def test(arg): 
    print ("arg: " + arg) 

# If the command line for test was specified. 
if options.test: 
    # Run the test function. 
    test(options.test) 

당신은 단순히 함수를 호출 할 -t your-text를 추가합니다.

python3 test.py -t hello

겠습니까 출력 :

HERE 
arg: hello 
+0

하지만,하지만, 어떻게 파이썬은 테스트를 찾을 않는가? 말하자면, random.py라는 파일에 있고 random.py를 실행하고 있다면 ...? test() 또는 test.py의 캐스트에서 명령 행 인수를 어떻게 출력 할 수 있습니까? 나는 아직도 불분명하다. 나는 def가 정의하는 것을 의미하는 것을 이해한다. 만약 내가 인자를 하드 코딩하는 라인 테스트 ('my args')를 제거하고 test.py "args"를 실행하려고한다면 "나는 여기"를 얻는다. – Ron

+0

당신은 완전히 다른 무언가에 대해 이야기하고 있습니다. 자세한 내용은이 기사를 참조하십시오. http://docs.python.org/dev/library/argparse.html – eandersson

+0

정말로 원하는 것은 명령 줄에서 스크립트를 실행하는 것입니다. 나는 그것이 왜 그렇게 고통 스러울 지 모르겠다. 하나는 커맨드 라인 매개 변수에 접근한다. 이것은 C, C++ 및 C#과 Java의 첫날과 같습니다. 완전히 내장되고 사소한 ... 그것은 매우 어색한 것 같습니다. 내가하고 싶은 일은 대량 검색을 수행하고 폴더의 많은 파일을 대체 할 스크립트를 작성/작성하는 것입니다. – Ron

1

test('testing') 

쓰기

def test(arg): 
    print ("arg" + arg) 

에서 그런 다음 당신이 이전과 같은 방법으로 실행합니다. 는

uinpt = raw_input("Enter something: ") 
test(uinpt) 
+0

print ("here") def test (arg) : print ("arg"+ arg) \t 그 파일 (세 줄)입니다. 내가 그것을 부르는 것이 중요하니? 나는 단지 test (arg)를 호출하기를 원한다. 심플 해 보입니다. – Ron

+0

필자는 Python으로 명령 행 매개 변수를 처리하는 줄을 모색했습니다. 어쩌면 그것은 그런 의미가 아니며 그것을 할 수있는 일종의 것입니까? 그게 다야? 이것은 C, C++, C#, Java에서 사소한 것이지만, 아직 온라인에서 발견 한 모든 것은 다소 복잡한 예입니다. – Ron

3

이 파이썬 관용구가 너무 많이 사용되며, 사용자 입력을 실행하려면이 경우 절 내부

if __name__ == "__main__": 
    # do stuff 
    ... 

모두를 스크립트 콘솔에서 실행할 때 실행됩니다.당신이 test("blah blah")으로 ... 이상 교체 한 경우 그런 식으로 당신은 당신이

2

(가) DEF 파이썬에서 구축 '정의'에 대한 짧은 : 당신이 원하는 결과를 얻을 것 모듈 파일 등

에 드라이버 코드를 넣을 수 있습니다 . 작성한 코드 블록은 테스트 함수를 정의하지만 호출하지는 않습니다. 인터프리터에 테스트 함수를 정의하면 '무엇'당신이 원하는 모든 것을 함께 명령

test('whatever') 

을 실행할 수 있습니다. 또는 당신은 테스트를 정의한 후 파일에서 해당 명령을 넣고 인수없이 승/아주 간단한 예입니다 여기에 test.py

+0

좋아요, 실행할 수 있습니다.하지만 test ('testing')에서와 같이 인수를 하드 코딩하는 대신 명령 줄 인수를 사용하는 방법은 무엇입니까? 기본적으로 명령 줄 인수로 호출 할 수있는 함수가 필요합니다. – Ron

+0

OK, 심지어 짧은 : # ---- testit.py ---- 데프 시험 (ARG) : 파이썬 testit.py 테스트 ("TEST" 인쇄 ("인수"+ 인수)에 의해 실행을) 그러나 나는 아무것도 얻지 않는다. "arg"+ arg를 인쇄하려면 어떻게해야합니까? 이것은 완전히 기본적인 것처럼 보이지만보고 찾고 보았을 때 나는 아무것도 발견하지 못합니다. – Ron

+0

불량 포맷에 죄송합니다! – Ron

1

를 입력 할 수 있습니다

def do_hex(): 
text=raw_input("Enter string to convert to hexadecimal: ") 
print "HEX: " + text.encode('hex') 

#call the function 

do_hex() 
관련 문제