programing

Pycharm and sys.argv 인수

lastcode 2023. 10. 4. 21:57
반응형

Pycharm and sys.argv 인수

명령행 인수를 입력으로 하는 스크립트를 디버그하려고 합니다.인수는 동일한 디렉토리에 있는 텍스트 파일입니다.스크립트는 sys.argv 목록에서 파일 이름을 가져옵니다.문제는 pycharm에서 인수가 있는 스크립트를 시작할 수 없다는 것입니다.

실행 > "구성 편집" 메뉴의 "스크립트 파라미터" 필드에 인수를 다음과 같이 입력하려고 했습니다.

-s'file1.txt', -s'file2.txt'

하지만 효과가 없었습니다.인수를 사용하여 스크립트를 시작하려면 어떻게 해야 합니까?

추신: 저는 우분투에 있습니다.

PyCharm에서 매개 변수는 에 추가되지만, 매개 변수는 큰따옴표로 둘러싸여 있습니다. ""인터프리터 플래그를 지정하지 않은 상태에서 다음과 같은-s. 그 깃발들은 상자에 명시되어 있습니다.

Script Parameters 상자 내용:

"file1.txt" "file2.txt"

인터페터 플래그:

-s

또는 시각적으로:

enter image description here

그런 다음 평가할 간단한 테스트 파일로 다음을 수행합니다.

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

우리가 제공한 매개 변수를 확보합니다.sys.argv[0]물론 스크립트 이름 보유):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']

이 창문으로 가는 방법을 궁금해하는 다른 사람들을 위해서입니다.방법은 다음과 같습니다.

다음을 클릭하면 액세스할 수 있습니다.Select Run/Debug Configurations(왼쪽)으로 이동합니다.Edit Configurations. 명확성을 위해 제공된 gif.

enter image description here

PyCharm 커뮤니티 또는 Professional Edition 2019.1+:

  1. 메뉴 모음에서 실행 -> 구성 편집을 클릭합니다.
  2. 매개변수 텍스트 상자에 인수 추가(예:file2.txt file3.txt, 아니면--myFlag myArg --anotherFlag mySecondArg)
  3. 적용을 누릅니다.
  4. 확인을 누릅니다.

Jim의 답변(논평을 하기에 충분한 대표점이 없어서 죄송합니다) 외에, PyCharm에 지정된 인수에는 명령줄에서 수행하는 것과 달리 특수 문자가 빠져 나오지 않는다는 점을 지적하고 싶었습니다.그럼 명령 줄에서는 다음과 같은 일을 수행합니다.

python mediadb.py  /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png

PyCharm 파라미터는 다음과 같습니다.

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"

알 수 없는 이유로 PyCharm Edu 버전에서는 명령줄 인수를 추가할 수 없습니다.프로페셔널 에디션과 커뮤니티 에디션에서만 가능합니다.

Python 파일 상단에 다음을 추가합니다.

import sys

sys.argv = [
    __file__,
    'arg1',
    'arg2'
]

이제 파이썬 스크립트를 마우스 오른쪽 버튼으로 클릭하면 됩니다.

첫번째 매개변수는 실행할 스크립트의 이름입니다.두 번째 파라미터 이후부터는 명령줄에서 전달하려는 파라미터가 됩니다.다음은 테스트 스크립트입니다.

from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second
from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second

다음은 입력 매개 변수인 'Path to your script', 'First Parameter', 'Second Parameter'를 전달하는 방법입니다.

./home/my_folder/test.py은 :,와 .

Script is /home/my_folder/test.py
first is First Parameter
second is Second Parameter

입력 매개 변수가 쉼표로 구분되어 있다는 것을 파악하는 데 시간이 좀 걸렸습니다.

에듀 버전에도 포함되어 있다고 생각합니다.초록색 실선 화살표 버튼(Run)을 마우스 오른쪽 버튼으로 클릭하고 "Add parameters"(파라미터 추가)를 선택합니다.

저는 에듀 버전에서 작동합니다.인터프리터 옵션에 -s 옵션을 지정할 필요는 없었습니다.

Pycharm parameters for running with command line

인수를 문자열로 지정할 때 PyCharm의 편집 구성에서 입력을 위해 ''(이 인용문)을 사용해서는 안 됩니다.

-s' 파일 1 대신에.txt', -s'file2.txt'는 간단히 다음과 같이 사용합니다.

-s 파일 1.txt, -s file2.txt

합니다.-argName"argValue"맘에 들다-d"rd-demo"합니다.

 -d"rd-demo" -u"estate"

에서의 인수 Parametersredit Configuration

argparse를 사용하고 있으며 스크립트를 디버깅하기 위해 Edit Configuration도 사용하고 있습니다.예를 들어 아래 스크립트는 str 유형에서 3개의 매개 변수(Path, Set1, N)와 선택적 매개 변수(flag)('Path' 및 'Set1')를 가져옵니다.int 입력에서 'N'.부울 유형의 선택적 매개 변수 'flag'입니다.

impor argparse


parser = argparse.ArgumentParser(prog='main.py')
parser.add_argument("Path", metavar="path", type=str)
parser.add_argument("Set1", type=str, help="The dataset's name.")
parser.add_argument("N", type=int, help="Number of images.")
parser.add_argument("--flag", action='store_true')
params = parser.parse_args()

명령줄을 사용하여 디버그에서 이 작업을 실행하거나 실행하지 않으려면 다음과 같은 작업만 수행하면 됩니다.

  1. 막대 메뉴 실행-->구성 편집

  2. 디버그/실행 스크립트의 이름을 정의합니다.

  3. 파라미터 섹션을 설정합니다.위 예제에서는 다음과 같이 입력합니다.

    기본값 3 매개 변수에 포함되어야 합니다. --> "c:\mypath" "name" 50

    선택적 매개변수 --> "c:\mypath" "name" 50 "--flag"

매개변수 섹션

언급URL : https://stackoverflow.com/questions/33102272/pycharm-and-sys-argv-arguments

반응형