"sys.argv[1]"는 무엇을 의미합니까? (sys.argv는 무엇이며, 어디에서 왔습니까?)
하여) 이 있는지 sys.argv[1]
나내다타. 입니까?단순히 입력을 요청하는 것입니까?
#!/usr/bin/python3.1
# import modules used here -- sys is a very standard one
import sys
# Gather our code in a main() function
def main():
print ('Hello there', sys.argv[1])
# Command line args are in sys.argv[1], sys.argv[2] ..
# sys.argv[0] is the script name itself and can be ignored
# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
main()
당신이 여기로 안내된 것은 아마도 당신이 질문했기 때문일 것입니다.IndexError
사하는코서에를 사용하는 sys.argv
문제는 당신의 코드에 있지 않습니다; 문제는 당신이 프로그램을 다음과 같은 방법으로 실행해야 한다는 것입니다.sys.argv
올바른 값을 포함합니다.방법을 이해하려면 답변을 읽어 주십시오.sys.argv
작동하다.
답변을 읽고 이해했지만 윈도우즈에서 여전히 문제가 있는 경우 Python Script에서 윈도우즈의 sys.argv를 사용하지 않는지 확인하여 문제를 해결하십시오.IDE 내부에서 프로그램을 실행하려는 경우 IDE 관련 도움말이 필요할 수 있습니다. 검색하십시오. 먼저 명령줄에서 프로그램을 성공적으로 실행할 수 있는지 확인하십시오.
이전 답변에서 사용자의 지식에 대해 많은 가정을 했다는 점에 주목하고 싶습니다.이 답변은 보다 자세한 튜토리얼 수준에서 질문에 대한 답변을 시도합니다.
Python을다▁for마▁inv호할▁every,파ocation.sys.argv
명령줄에서 인수(공백으로 구분)를 나타내는 문자열 목록이 자동으로 표시됩니다.이 이름은 argv와 argc가 명령줄 인수를 나타내는 C 프로그래밍 규칙에서 유래되었습니다.
Python에 익숙해지면서 목록과 문자열에 대해 더 알고 싶겠지만, 그 동안 알아야 할 몇 가지 사항이 있습니다.
단순히 표시된 대로 인수를 인쇄하는 스크립트를 만들 수 있습니다.또다음사을여인수인를다쇄니합수의용한하를 합니다.len
목록에 있는 함수입니다.
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
이 스크립트를 사용하려면 Python 2.6 이상이 필요합니다. 스크립트를 이스립호를면하출라고 ,print_args.py
다른 인수를 사용하여 호출하여 결과를 확인할 수 있습니다.
> python print_args.py
['print_args.py'] 1
> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4
> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2
> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4
보시다시피 명령줄 인수에는 스크립트 이름이 포함되지만 인터프리터 이름은 포함되지 않습니다.이런 의미에서 Python은 스크립트를 실행 파일로 취급합니다.실행 파일의 이름(이 경우 파이썬)을 알아야 하는 경우 다음을 사용할 수 있습니다.sys.executable
.
예제를 보면 사용자가 따옴표로 캡슐화된 인수를 사용하여 스크립트를 호출한 경우 공백이 포함된 인수를 수신할 수 있으므로 사용자가 제공한 인수 목록을 볼 수 있습니다.
이제 파이썬 코드에서 이 문자열 목록을 프로그램에 대한 입력으로 사용할 수 있습니다.목록은 0 기반 정수로 인덱싱되므로 list[0] 구문을 사용하여 개별 항목을 가져올 수 있습니다.예를 들어 스크립트 이름을 가져오려면 다음과 같이 하십시오.
script_name = sys.argv[0] # this will always work.
흥미롭지만 스크립트 이름을 알 필요는 거의 없습니다.파일 이름에 대한 스크립트 다음에 첫 번째 인수를 가져오려면 다음을 수행합니다.
filename = sys.argv[1]
이는 매우 일반적인 사용법이지만 인수가 제공되지 않으면 IndexError와 함께 실패합니다.
또한 Python을 사용하면 목록의 한 조각을 참조할 수 있으므로 사용자가 제공한 인수의 다른 목록을 얻을 수 있습니다(스크립트 이름 없이).
user_args = sys.argv[1:] # get everything after the script name
또한 Python을 사용하면 일련의 항목(목록 포함)을 변수 이름에 할당할 수 있습니다.따라서 사용자가 항상 두 개의 인수를 제공할 것으로 예상되는 경우 이러한 인수(문자열)를 두 개의 변수에 할당할 수 있습니다.
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
그래서, 당신의 구체적인 질문에 대답하자면,sys.argv[1]
번째 인수를 (" 첫번명나다니냅타인를수령줄째a(a)).string
가 해당 스크립트에 제공되었습니다.입력을 요구하지 않지만 스크립트 이름 뒤에 명령줄에 인수가 제공되지 않으면 IndexError와 함께 실패합니다.
sys.argv[1]에는 스크립트에 전달된 첫 번째 명령줄 인수가 포함되어 있습니다.
들어 이 " 예들어스이경지우정된름이트를크립▁your경▁if▁for"인 경우가 있습니다.hello.py
그리고 당신은 다음을 발행합니다.
python 3.1 hello.py foo
또는:
$ chmod +x hello.py # make script executable
$ ./hello.py foo
스크립트가 인쇄됩니다.
안녕 foo.
sys.argv
목록입니다.
이 목록은 명령줄에서 생성되며 명령줄 인수 목록입니다.
예:
명령행에 다음과 같은 것을 입력합니다.
python3.2 file.py something
sys.argv
이 될 .py '
이우경sys.argv[1] = 'something'
예를 들어 다음과 같이 스크립트를 호출하는 경우 프레데릭의 답변에 추가하는 것입니다.
./myscript.py foo bar
sys.argv[0]
.py " "/.myscript.py "일 입니다.sys.argv[1]
"와 "foo"가될 것입니다.sys.argv[2]
"가 될 입니다... 바"가 될 수도 있고... 등등.
를 다음과 과 같습니다. ./myscript.py foo
스크립트의 출력은 "Hello there foo"입니다.
Jason의 답변에 몇 가지 추가 사항:
인수를 하는 경우: " " " " " " " " " " "user_args = sys.argv[1:]
고려해 보십시오.sys.argv
(제이슨이 언급한) 문자열 목록으로.모든 목록 조작이 여기에 적용됩니다.이를 "목록 슬라이싱"이라고 합니다.자세한 내용은 여기를 참조하십시오.
다음과 .list[start:end:step]
시작을 생략하면 기본값이 0이 되고 끝을 생략하면 목록 길이가 기본값이 됩니다.
세 번째 인수 다음에만 모든 인수를 사용하려고 한다고 가정합니다.
user_args = sys.argv[3:]
처음 두 개의 인수만 사용한다고 가정합니다.
user_args = sys.argv[0:2] or user_args = sys.argv[:2]
인수 2 - 4를 사용한다고 가정합니다.
user_args = sys.argv[2:4]
마지막 인수를 원한다고 가정합니다(마지막 인수는 항상 -1이므로 여기서 일어나는 일은 카운트를 뒤에서 시작하는 것입니다).시작은 마지막, 끝, 단계 없음):
user_args = sys.argv[-1]
두 번째 마지막 인수를 원한다고 가정합니다.
user_args = sys.argv[-2]
마지막 두 인수를 사용한다고 가정합니다.
user_args = sys.argv[-2:]
마지막 두 개의 인수를 원한다고 가정합니다.여기서 시작은 -2이며, 두 번째 마지막 항목이고 끝까지입니다(표시::
):
user_args = sys.argv[-2:]
마지막 두 변수를 제외한 모든 변수를 원한다고 가정합니다.여기서 시작은 0(기본값)이고 끝은 두 번째 마지막 항목입니다.
user_args = sys.argv[:-2]
인수를 역순으로 지정한다고 가정합니다.
user_args = sys.argv[::-1]
sys.argv는 스크립트 경로 및 명령줄 인수를 포함하는 목록입니다. 즉, sys.argv[0]는 실행 중인 스크립트의 경로이며 다음 멤버는 모두 인수입니다.
명령줄을 통해 스크립트를 실행하는 동안 python 스크립트에 인수를 전달하려면 다음과 같이 하십시오.
> python create_thumbnail.py test1.jpg test2.jpg
여기서 스크립트 이름 - create_detail.py, 인수 1 - test1.jpg, 인수 2 - test2.jpg
create_thumbnail 내에 있습니다.내가 사용하는 파이 스크립트
sys.argv[1:]
그것은 내가 명령 줄에서 전달한 인수 목록을 나에게 줍니다.['test1.jpg', 'test2.jpg']
sys.argv
는 의속니다의 입니다.sys
.명령행의 파일에 인수가 전달되었다고 합니다. sys.argv[0]
파일이 있는 디렉터리를 캡처합니다. sys.argv[1]
명령줄에서 전달된 첫 번째 인수를 반환합니다.우리가 example.py 파일을 가지고 있다고 생각해보세요.
예.파이의
import sys # Importing the main sys module to catch the arguments
print(sys.argv[1]) # Printing the first argument
이제 명령 프롬프트에서 이 작업을 수행합니다.
python example.py
그것은 2호선에 인덱스 오류를 던질 것입니다.아직 전달된 인수가 없기 때문입니다.는 다을사사전인수있확다습을 사용하여 할 수 .if len(sys.argv) >= 1: # Code
.py 을 하면 example.py 이 .
python example.py args
인쇄:
args
왜냐하면 그것이 첫 번째 논쟁이었기 때문입니다!PyInstaller를 사용하여 실행 파일로 만들었다고 가정해 보겠습니다.이 작업을 수행할 수 있습니다.
example argumentpassed
인쇄:
argumentpassed
단말기에서 명령을 내릴 때 정말 도움이 됩니다.먼저 인수의 길이를 확인합니다.전달된 인수가 없으면 도움말 텍스트를 수행합니다.
sys.argv는 스크립트를 실행할 때 전달된 명령줄 인수를 표시하거나 터미널에서 실행되는 동안 sys.argv가 python에서 전달된 명령줄 인수를 저장한다고 말할 수 있습니다.
사용해 보십시오.
import sys
print sys.argv
argv는 파이썬 목록에 전달된 모든 인수를 저장합니다.위의 내용은 전달된 모든 인수를 출력하여 스크립트를 실행합니다.
이제 filename.py 에서 다음과 같이 실행해 보십시오.
python filename.py example example1
이렇게 하면 세 개의 인수가 목록에 인쇄됩니다.
sys.argv[0] #is the first argument passed, which is basically the filename.
유하게사,argv[1]
이 경우, 첫 번째 인수가 전달되었습니다.'example'
.
언급URL : https://stackoverflow.com/questions/4117530/what-does-sys-argv1-mean-what-is-sys-argv-and-where-does-it-come-from
'programing' 카테고리의 다른 글
iPhone에서 텍스트 입력 팝업 대화 상자를 가져오는 간단한 방법 (0) | 2023.06.06 |
---|---|
java.io .IO 예외: Android Firebase의 FIS_AUTH_ERROR (0) | 2023.06.06 |
ASP.net MVC의 DropDownList에 빈 값 추가 (0) | 2023.06.06 |
열에서 일치하는 부분 문자열을 기준으로 데이터 프레임 행 선택 (0) | 2023.06.06 |
Spring JPA(MariaDB) 기본 키가 아닌 여러 개의 키를 외부 키로 사용할 수 있습니까? (0) | 2023.06.06 |