Python:以下代码有什么作用?

时间:2015-09-16 23:26:05

标签: python sys

有人可以一块一块地向我解释,以下是什么?我的代码将无法运行,并且提供了此部分。我已经在iPython笔记本中测试了所有代码,一切正常,所以我不知道问题是否是因为下面的这个块。

def main():
  args = sys.argv[1:]
  if not args:
    print 'usage: [--summaryfile] file [file ...]'
    sys.exit(1)
  summary = False
  if args[0] == '--summaryfile':
    summary = True
    del args[0]

  # ... my code ....

更新:我试图像Simon建议的那样做。我打开了iPython并在命令行中输入以下内容:

ipython 'assignment.py' --summaryfile

我尝试了各种变体,并且一直遇到语法错误。

  1. 我该如何运行?
  2. 我只限于iPython吗?

2 个答案:

答案 0 :(得分:2)

它基本上检查运行脚本时是否已将--summaryfile作为参数传递

如果没有传递任何参数,那么它将打印一行,告诉您如何使用该脚本然后退出。摘要现在设置为false

如果--summaryfile已通过,那么它将设置summary = True并继续运行其余代码

我不确定你是否可以在ipython中输入这样的参数,所以假设你的代码总是会退出,因为它找不到任何参数

编辑:

出于某种原因,我自动将ipython与ipython笔记本相关联。你可以用ipython传递参数。看这里: How to pass command line arguments to ipython

在您的情况下,尝试在通过ipython运行脚本时添加--summaryfile作为参数

如果您是从ipython笔记本运行的,那么您可以尝试以下几种方法:

  1. 删除该部分代码,然后设置summary = True。其余代码应该运行,但是没有看到所有内容很难说明这对代码的其余部分会产生什么影响

  2. 您可以将脚本保存为python .py文件,并使用ipython magic从笔记本中运行代码。您可以在笔记本中运行该脚本时传递参数。请检查:https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-run

  3. 如果所有代码都在常规.py文件中(在笔记本之外),则可以使用命令行运行并传递参数。导航到脚本文件所在的目录并运行ipython filename.py --summaryfile

答案 1 :(得分:1)

一个非常基本的命令行参数解析器。

它检查除可执行文件名称本身(./sipp -sf uac.xml 127.0.0.1:5080 -trace_rtt )之外的命令行。如果它为空,则转储帮助消息并失败。如果第一个参数是sys.argv[1:],请设置一些标志。