代码之家  ›  专栏  ›  技术社区  ›  Martin Bre

Python 2.7 argsparse,路径为args

  •  0
  • Martin Bre  · 技术社区  · 7 年前

    我想给我的程序提供一个文件的路径,但如果包含/它就不喜欢它。如何让python相信我的路径只是一个参数

       #!/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')
    

    任何这些结果都会导致expect one参数

    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='-+/',)
    

     parser = argparse.ArgumentParser(description='Change the option prefix characters',prefix_chars='-+',)
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   match    7 年前

    问题是你正在使用 prefix_chars='-+/' -这告诉argparse这些字符是标记命令标志的。

    所以您的代码可以看到 / 相当于 - 读起来就像你键入了:

    argsparse.py -f -home/user/banana

    这意味着 -f 没有给出一个参数。移除 prefix_chars 它应该能正常工作。