0

我确信这个问题的答案就在那里,但我已经阅读了网站信息,我已经观看了他们制作的视频,并且我试图找到一个非常基本的教程,但我不能。我整天都在搞这个,这对我来说真的没有意义。

这是我的错误:

vco@geoHP:~$ python3 a_blah.py "don't scare the cats" magic
Traceback (most recent call last):
  File "a_blah.py", line 20, in <module>
    arguments = docopt.docopt(__doc__)
  File "/usr/lib/python3/dist-packages/docopt.py", line 579, in docopt
    raise DocoptExit()
docopt.DocoptExit: Usage: 
    a_blah.py <start>... <end>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "a_blah.py", line 33, in <module>
    except DocoptExit:
NameError: name 'DocoptExit' is not defined

第 20 行 - 我不明白为什么该行会产生错误,它以前工作过,我在其他程序中看到过确切的行?

我不知道为什么 docopt 的第 570 行会产生错误 - 我见过其他人使用 DocoptExit(),这不只是 Docopt 的一部分吗?我必须为此编写自己的退出函数吗?(我没有看到其他人这样做)

这是代码

import docopt

if __name__ == '__main__':

    try:
        arguments = docopt.docopt(__doc__)

        print(arguments['<start>'])

        print("that was that")

        print(arguments['<end>'])       

    except docopt.DocoptExit:
        print("this hasn't worked")

我试图做的是我编写的一个脚本,它根据文件的扩展名将文件从一个地方移动到另一个地方。

因此命令行中的参数将是文件类型、起始目录、目标目录,以及在它们被移动后从起始目录中删除它们的选项。

我正在尝试(但失败)让 docopt 在将其包含在其他脚本中之前自行工作。

4

1 回答 1

2

您想要的例外是在docopt's 命名空间中。你永远不会将它导入你的全局命名空间,所以你不能简单地用它的名字来引用它。需要单独导入或者通过模块引用。您也不应该在异常后使用括号。

import docopt

try:
    # stuff
except docopt.DocoptExit:
    # other stuff

或者

import docopt
from docopt import DocoptExit

try:
    # stuff
except DocoptExit:
    # other stuff
于 2014-09-27T17:20:06.500 回答