Python 2.7 argsparse 以路径作为参数

Python 2.7 argsparse with a path as args

我想为我的程序提供一个文件路径,但它不喜欢包含 / 的程序。我怎样才能说服 python 我的路径只有 1 个参数

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

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

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

所以您的代码将 / 视为等同于 - 并像您输入的那样读取它:

argsparse.py -f -home/user/banana

这意味着 -f 还没有给出参数。删除 prefix_chars 它应该可以正常工作。