Python:从命令行输入创建一个元组

时间:2010-11-16 16:25:45

标签: python command command-line-arguments tuples

我有一个程序,提供如下命令行输入:

python2.6 prog.py -p a1 b1 c1

现在,我们可以有任意数量的输入参数,即-p a1和-p a1 c1 b1 e2都是可能的。

我想基于变量输入参数创建一个元组。任何有关如何做到这一点的建议都会非常有帮助!一个固定长度的元组很容易,但我不知道如何实现一个可变长度元组。

感谢。

8 个答案:

答案 0 :(得分:2)

元组的长度是固定的。创建元组后,您无法对其进行修改。

命令行参数存储在列表中。

import sys
t = tuple(sys.argv[1:]) # since sys.argv[0] is the name of the script

答案 1 :(得分:1)

这应该这样做:

import sys
t = tuple(sys.argv)

由于您可能不想要脚本名称,因此您可能希望这样做:

if len(sys.argv) > 1:
    t = tuple(sys.argv[1:])

答案 2 :(得分:1)

通过sys.argv迭代,直至到达另一个标志。

答案 3 :(得分:1)

您可以使用tuple()构造函数将列表转换为元组:

>>> tuple([1, 2, 3, 4])
(1, 2, 3, 4)

在sys.argv =)上使用它,或者它的一部分。 干杯!

答案 4 :(得分:1)

为什么不看一会儿*args and **kwargs讨论?

答案 5 :(得分:1)

import sys

t1 = tuple(sys.argv)
t2 = tuple(sys.argv[1:])

print t1
print t2

答案 6 :(得分:1)

您可以使用getopt从命令行获取args。它返回一个args列表,然后您可以使用tuple()

将其转换为元组
import getopt
import sys

def main(argv):
    opts, args = getopt.getopt(argv, 'p')
    return tuple(args)
if __name__=='__main__':
    main(sys.argv[1:])

请参阅http://www.faqs.org/docs/diveintopython/kgp_commandline.html

答案 7 :(得分:1)

您确切问题的正确答案是tuple(sys.argv[1:]),但有更好的方法可以获取命令行参数,以便您可以更恰当地使用它们。试试optparsehttp://www.doughellmann.com/PyMOTW/optparse/

如果您使用的是Python 2.7,则应使用argparse