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
它应该可以正常工作。
我想为我的程序提供一个文件路径,但它不喜欢包含 / 的程序。我怎样才能说服 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
它应该可以正常工作。