我有一套三个程序,我正试图合并成一个。他们都是单独工作的,但我在试图让他们一起工作时遇到了问题。我现在遇到的问题是代码的第一部分:

import os
import sys
from contextlib import closing

import colorama  # $ pip install colorama
import docopt  # $ pip install docopt
import socks  # $ pip install PySocks
import stem.process  # $ pip install stem
from sockshandler import SocksiPyHandler  # see pysocks repository
from stem.util import term

try:
    import urllib2
except ImportError: # Python 3
    import urllib.request as urllib2

args = docopt.docopt(__doc__, version='0.2')
colorama.init(strip=not (sys.stdout.isatty() or args['--color']))

当我运行程序时,会出现以下错误:
Traceback (most recent call last):
  File "cilantro.py", line 34, in <module>
    args = docopt.docopt(__doc__, version='0.2')
  File "C:\Python34\lib\site-packages\docopt.py", line 558, in docopt
    DocoptExit.usage = printable_usage(doc)
  File "C:\Python34\lib\site-packages\docopt.py", line 468, in printable_usage
    raise DocoptLanguageError('"usage:" (case-insensitive) not found.')
docopt.DocoptLanguageError: "usage:" (case-insensitive) not found.

为什么我会收到这个错误信息?同样的代码在原来的程序中运行良好。

最佳答案

使用docopt时,需要为脚本编写一个doc字符串。docopt解析此字符串以了解如何处理命令行选项和参数。
要解决这个问题,以及“导入操作系统”上方的如下文本(因此这是文件中的第一件事):

"""
Name.
Describe what this script does

Usage:
 name <firstarg>
 name --countdown
 name sillycommand <SILLYNESS>
 name -h | --help

Options:
  --countdown  display a count down
"""

在docopt文档中可以找到更多关于在这个用法字符串中放入什么的详细信息,http://docopt.org/

10-07 21:08