我有一个程序,提供如下命令行输入:
python2.6 prog.py -p a1 b1 c1
现在,我们可以有任意数量的输入参数,即-p a1和-p a1 c1 b1 e2都是可能的。
我想基于变量输入参数创建一个元组。任何有关如何做到这一点的建议都会非常有帮助!一个固定长度的元组很容易,但我不知道如何实现一个可变长度元组。
感谢。
答案 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:])
,但有更好的方法可以获取命令行参数,以便您可以更恰当地使用它们。试试optparse
:
http://www.doughellmann.com/PyMOTW/optparse/
如果您使用的是Python 2.7,则应使用argparse
。