【发布时间】:2015-07-06 08:39:58
【问题描述】:
今天我的 python 代码遇到了一个奇怪的行为。我写了下面这个小程序来说明。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--list1", "-l1", nargs='+', help="liste 1", metavar="THE_LIST")
args = parser.parse_args()
if args.list1:
print("list1:" + str(args.list1))
我在第一台服务器上运行代码。我得到了预期的行为(list1 包含一个包含“-V”的字符串)。
$ uname -a
Linux computer 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
$ python --version
Python 2.7.3
$ cat test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--list1", "-l1", help="liste 1", metavar="THE_LIST")
args = parser.parse_args()
if args.list1:
print("list1:" + str(args.list1))
$ python test.py -l1 "abc -V def"
list1:abc -V def
我在第二台服务器(Centos 6.6)上运行它并得到一个错误。连字符似乎被视为附加参数的一部分,尽管 -l1 的值仍然用双引号括起来......任何想法都会非常感激......
$ uname -a
Linux sacapus 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ python --version
Python 2.7.9
$ cat test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--list1", "-l1", help="liste 1", metavar="THE_LIST")
args = parser.parse_args()
if args.list1:
print("list1:" + str(args.list1))
$ python test.py -l1 "abc -V def"
usage: test.py [-h] [--list1 THE_LIST]
test.py: error: unrecognized arguments: -V def
【问题讨论】:
-
在我看来,这更像是你的 shell/OS 的问题,而不是 Python 的问题。添加了一些标签,如果有帮助请随时修改
-
在 Python 2.7.6 上使用 bash、ksh、csh 和 fish 为我工作。
-
我必须同意@IanClark;这似乎是一个外壳问题。我通常运行 Linux,但是当我遇到这个时碰巧在 Windows 机器上。我无法在 Windows 下复制错误。
标签: python shell centos argparse hyphen