首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python sys.argv列表和索引

Python sys.argv列表和索引
EN

Stack Overflow用户
提问于 2010-04-13 07:05:25
回答 4查看 128.5K关注 0票数 29

在下面的代码中,我知道sys.argv使用列表,但是我不清楚索引是如何在这里使用的。

def main():

  if len(sys.argv) >= 2:
    name = sys.argv[1]
  else:
    name = 'World'
  print 'Hello', name

if __name__ == '__main__':
  main()

如果我改变了

name = sys.argv[1]

name = sys.argv[0] 

并为其返回的参数键入内容:

Hello C:\Documents and Settings\fred\My Documents\Downloads\google-python-exercises
\google-python-exercises\hello.py

这是有意义的。

有人能解释一下2在这里是怎么用的吗:

if len(sys.argv) >= 2:

以及1在这里的用法:

name = sys.argv[1] 
EN

回答 4

Stack Overflow用户

发布于 2010-04-13 07:11:19

sys.argv是传递给Python程序的参数列表。第一个参数sys.argv[0]实际上是程序被调用时的名称。这不是Python的事情,而是大多数操作系统的工作方式。sys.argv[0]存在的原因是,您可以根据程序的调用方式来更改程序的行为。因此,sys.argv[1]是您实际传递给程序的第一个参数。

因为Python中的列表(像大多数序列一样)从0开始索引,并且索引超过列表的结尾是错误的,所以需要检查列表的长度是否为2或更长,然后才能访问sys.argv[1]

票数 12
EN

Stack Overflow用户

发布于 2010-04-13 07:12:22

简而言之,sys.argv是用于运行程序的命令中出现的单词的列表。第一个单词(列表的第一个元素)是程序的名称,列表的其余元素是提供的任何参数。在大多数计算机语言(包括Python)中,列表从零开始建立索引,这意味着列表中的第一个元素(在本例中是程序名)是sys.argv[0],第二个元素(第一个参数,如果有的话)是sys.argv[1],依此类推。

测试len(sys.argv) >= 2简单地检查列表的长度是否大于或等于2,如果至少有一个参数提供给程序,就会出现这种情况。

票数 6
EN

Stack Overflow用户

发布于 2010-04-13 22:47:08

因此,如果我想返回一个名字和姓氏,比如: Hello Fred Gerbig我会使用下面的代码,这个代码可以工作,但是它实际上是最正确的方法吗?

import sys
def main():
  if len(sys.argv) >= 2:
    fname = sys.argv[1]
    lname = sys.argv[2]
  else:
    name = 'World'
  print 'Hello', fname, lname
if __name__ == '__main__':
  main()

编辑:发现上面的代码使用2个参数工作,但使用1崩溃。尝试将len设置为3,但没有做任何事情,仍然崩溃(重新阅读其他答案,现在理解为什么3什么都不做)。如果只输入了一个参数,我如何绕过这些参数?或者错误检查返回“您必须输入2个参数”会是什么样子?

编辑2:弄清楚了:

import sys
def main():
  if len(sys.argv) >= 2:
    name = sys.argv[1] + " " + sys.argv[2]
  else:
    name = 'World'
  print 'Hello', name
if __name__ == '__main__':
  main()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2626026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档