>

프로그램에 파일 경로를 지정하고 싶지만 /가 있으면 마음에 들지 않습니다. 파이썬에게 내 경로가 단지 하나의 논쟁이라는 것을 어떻게 확신시킬 수 있습니까?

  #!/usr/bin/env python
    import argparse
    parser = argparse.ArgumentParser(description='Change the option prefix characters',prefix_chars='-+/',)
    parser.add_argument('-f', action='store', dest='PathtoFile',help='PathtoFile')
    print parser.parse_args()

/없이 작동합니다

argsparse.py -f banana    ->    Namespace(PathtoFile='banana')

이러한 결과는 하나의 주장을 기대합니다

argsparse.py -f /home/user/banana 
argsparse.py -f '/home/user/banana'
argsparse.py -f '//home//user//banana'
argsparse.py -f "/home/user/banana"
argsparse.py -f "//home//user//banana"

->

usage: argsparse.py [-h] [-f PATHTOFILE]
argsparse.py: error: argument -f: expected one argument

업데이트 : 감사합니다. 접두어로 추가 /를 잊어 버렸습니다 변경

parser = argparse.ArgumentParser(description='Change the option prefix characters',prefix_chars='-+/',)

to

parser = argparse.ArgumentParser(description='Change the option prefix characters',prefix_chars='-+',)


  • 답변 # 1

    문제는 당신이 prefix_chars='-+/' 를 사용하고 있다는 것입니다  -이것은 해당 문자가 명령 플래그를 표시하는 것임을 argparse에 알려줍니다.

    그래서 당신의 코드는 / 를보고 있습니다   - 와 동일  입력 한 것처럼 읽습니다 :

    argsparse.py -f -home/user/banana

    이것은 -f  논쟁이 없었다. prefix_chars 를 제거  제대로 작동해야합니다.

  • 이전 루비 온 레일 - 정의되지 않은 메소드`_path '
  • 다음 hyperledger fabric - EncCC 체인 코드를 설치할 수 없습니다