如何在python中获取没有名称的参数
Posted
技术标签:
【中文标题】如何在python中获取没有名称的参数【英文标题】:How do get parameter without name in python 【发布时间】:2014-05-15 17:14:00 【问题描述】:我正在尝试编写一个接受可选输入参数和输入文件的 python 脚本:
./script --lines 1 file.txt
应该以1
为行数(--lines
),然后以file.txt
作为输入文件。但是,getopt
甚至看不到“file.txt”,因为它前面没有参数名称。
如何获取文件名?我已经考虑过使用sys.arv[-1]
,但这意味着当我运行时:
./script --lines 1
然后1
将作为输入文件名。然后我的脚本会抛出一个错误(如果不存在名为 1
的文件):
error: file '1' no found
这可行,但不是一个很好的解决方案。有没有办法解决这个问题?
【问题讨论】:
使用argparse
模块...
一种可能的解决方法是检查 sys.argv[-1] 是否为有效文件。
【参考方案1】:
一定要使用argparse
——它包含在python2.7+中,可以很容易地为旧版本安装:
parser = argparse.ArgumentParser()
parser.add_argument('--lines', type=int, default=0, help='number of lines')
parser.add_argument('file', help='name of file')
namespace = parser.parse_args()
print namespace.lines
print namespace.file
【讨论】:
用 ArgumentParser 替换 getopt 将我的代码大小减少了几十行。这是要走的路。 @pap42 -- 听到这让我非常高兴。我想这就是python团队从getopt
-> optparser
-> argparse
...【参考方案2】:
打电话给getopts
:
opts, args = getopts(...)
第二个元素是getopts
无法识别的参数列表。在您的示例中,它将是一个包含单个项目“file.txt”的列表。
【讨论】:
正是我需要的。谢谢。以上是关于如何在python中获取没有名称的参数的主要内容,如果未能解决你的问题,请参考以下文章