【问题标题】:Python: What does the following code do?Python:下面的代码是做什么的?
【发布时间】:2015-09-18 10:24:22
【问题描述】:

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

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 ....

更新:我尝试按照西蒙的建议去做。我打开 iPython 并在命令行中输入以下内容:

ipython 'assignment.py' --summaryfile

我尝试了这个的变体,但我不断收到语法错误。

  1. 如何运行它?
  2. 我是否仅限于 iPython?

【问题讨论】:

  • 您想知道为什么您的代码无法运行吗?您是否尝试在 iPython 笔记本中运行此代码?因为你不能/不应该用这段代码做后者:它是针对命令行使用的,而不是笔记本使用。
  • @Evert 即使我使用 PyCharm,当我尝试运行脚本时,我得到退出代码 1
  • 我不知道 PyCharm,但我猜想,类似地,没有参数传递给脚本。在该块中放入一些调试打印语句,例如print sys.argv

标签: python sys


【解决方案1】:

它主要检查运行脚本时是否 --summaryfile 已作为参数传递

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

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

我不确定你是否可以在 ipython 中输入类似的参数,所以大概你的代码将总是退出,因为它找不到任何参数

编辑:

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

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

如果您是从 ipython notebook 运行它,您可以尝试以下几件事:

  1. 删除该部分代码并设置摘要 = True。您的其余代码应该可以运行,但如果没有看到所有内容,很难说这可能会对您的其余代码产生什么影响

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

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

【讨论】:

  • ipython path/to/script --some=options --and arguments
  • 是的,刚刚编辑。出于某种原因,每当有人说 ipython -_- 时,我都会自动想到 ipython 笔记本
  • @Simon 我正在使用 ipython 笔记本。对不起,我也是这样。
  • @Simon 如果我在 PyCharm 中这样做,我该如何传递参数?我完全不明白这一点。我不知道--summaryfile 是什么,也不知道我应该用它做什么。双破折号是什么意思?
  • 编辑了一些您可以尝试的额外事情的答案。参数在命令行中传递。它们是附加到命令末尾的东西,作为正在运行的脚本的选项
【解决方案2】:

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

它检查命令行,除了可执行文件的名称本身 (sys.argv[1:])。如果它为空,则转储帮助消息并失败。如果第一个参数是"--summaryfile",设置一些标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2019-06-24
    • 2014-08-31
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多