2013-07-04 4 views
1

Windows 7에서 Python2.7.5를 사용하고 있습니다. 명령 줄 인수를 처음 사용합니다. 이 연습을하려고합니다 :파이썬 명령 줄 인수의 기초

명령 줄에서 문자열을 읽고 각 문자가 나오는 횟수와 함께 문자열에 나오는 문자표를 반환하는 프로그램을 작성하십시오. 예를 들어 :

$ python letter_counts.py "ThiS is String with Upper and lower case Letters." 
a 2 
c 1 
d 1 
# etc. 

내가 cmd를 목록에 파일 이름과 출력을 명령 줄 인수를 추가하는 방법을 알고있다 (창 명령 프롬프트). 그러나 파이썬 스크립트에서 명령 줄 인수를 사용하는 방법을 배우고 싶습니다. 추가 명령 줄 인수를 추가/액세스하고 문자를 계산하기 위해 루프를 만들어야하기 때문입니다.

cmd 외부에서는 현재 letter_counts.py 만 파일 이름으로 사용하고 있습니다. 이것은 하나의 명령 줄 인수입니다.

python이 아니라 cmd : 명령 행 인수를 추가하고 액세스하려면 어떻게해야합니까?

답변

2

sys 모듈의 sys.argv 목록을 사용하려고합니다. 명령 줄에 전달 된 인수에 액세스 할 수 있습니다. 명령 라인 입력 python myfile.py a b c 있었다면

는 예를 들어, sys.argv[0]sys.argv[2]는 B이다 sys.argv[1]는이다 myfile.py이며 sys.argv[3]는 C이다.

실행 예 (testcode.py) : (명령 행에서) 실행 다음

if __name__ == "__main__": 
    import sys 
    print sys.argv 

:

#!/usr/bin/python 

import sys 

print sys.argv 
counts={} 
for st in sys.argv[1:]: 
    for c in st: 
     counts.setdefault(c.lower(),0) 
     counts[c.lower()]+=1 

for k,v in sorted(counts.items(), key=lambda t: t[1], reverse=True): 
    print "'{}' {}".format(k,v) 

:

D:\some_path>python testcode.py a b c 
['testcode.py', 'a', 'b', 'c'] 
+0

감사합니다. 나는 너의 조언을 따르려고 노력하고있다. 단순히 파이썬 셸에 입력 한 경우 sys.argv는 빈 목록을 반환합니다. .py 파일과 "모듈 실행"키를 작성하면 .py 파일의 파일 이름 인 1 개의 인수가있는 목록을 반환합니다. 성공적으로 명령 줄 인수를 cmd (목록 반환)의 동일한 파일에 추가했지만 sys.argv는 .py 파일의 이름에만 응답하고 길이가 1 인 목록을 계속 반환합니다. – user2547317

+0

@ user2547317'sys.argv'는'python myfile.py a b c'와 같이 프로그램을 실행하기 위해 명령 행을 사용하는 경우 하나 이상의 요소 만 가질 것입니다. –

+0

python myfile.py a cmd를 입력하고 있는데 다른 곳에 입력해야합니까? – user2547317

0

당신은이 라인을 따라 뭔가를 할 수 python letter_counts.py "ThiS is String with Upper and lower case Letters." 인화로 호출 된 경우 :

['./letter_counts.py', 'ThiS is String with Upper and lower case Letters.'] 
' ' 8 
'e' 5 
's' 5 
't' 5 
'i' 4 
'r' 4 
'a' 2 
'h' 2 
'l' 2 
'n' 2 
'p' 2 
'w' 2 
'c' 1 
'd' 1 
'g' 1 
'o' 1 
'u' 1 
'.' 1 

대신이 같은 인용 부호를 사용하지 않는 경우 51,515,: python letter_counts.py ThiS is String with Upper and lower case Letters.가 인쇄 :

['./letter_counts.py', 'ThiS', 'is', 'String', 'with', 'Upper', 'and', 'lower', 'case', 'Letters.'] 
'e' 5 
's' 5 
't' 5 
'i' 4 
'r' 4 
'a' 2 
'h' 2 
'l' 2 
'n' 2 
'p' 2 
'w' 2 
'c' 1 
'd' 1 
'g' 1 
'o' 1 
'u' 1 
'.' 1 

참고 출력의 상단에있는 목록 sys.argv의 차이. 그 결과 단어 사이의 공백이 사라지고 글자 수가 동일 해집니다.

+0

안녕하세요 @ drewk 답변 해 주셔서 감사합니다. letter_counts.py 파일에이 코드를 삽입하여 작동하도록했습니다. 그런 다음 cmd를 열고 python letter_counts.py를 호출합니다. "ThiS는 대문자와 소문자로 된 문자열입니다."일단 cmd 창에서 결과를 볼 수 있습니다. 올바른 프로세스입니까? cmd 창에서 명령 줄 인수 만 실행할 수 있습니까? – user2547317

+0

예, cmd 창만 가능하지만 다른 프로세스에서 호출하고 캡처 할 수는 있습니다 이 출력. '파이썬'과 'cmd'의 의미는 무엇입니까? – dawg

+0

알았어요. 파이썬 쉘과 윈도우 7의 명령 행 프롬프트 (cmd) 창을 의미합니다. – user2547317

관련 문제