2015-04-23 63 views
2

我有一套三個程序,我試圖合併成一個。他們都是單獨工作的,但我在嘗試讓他們一起工作時遇到了問題。我目前遇到的問題是代碼的第一部分:docopt在Python中給我的問題

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. 

爲什麼會收到此錯誤消息?原始程序中相同的代碼工作正常。

+0

你怎麼運行這個? –

+0

在Windows命令提示符下。 –

+0

如果我的回答有幫助(這是這個問題的唯一答案),你能接受嗎? –

回答

2

使用docopt時,您需要爲腳本編寫一個__doc__字符串。 docopt分析這個字符串以找出如何處理命令行選項和參數。

要解決這個問題,讓人覺得你的「導入OS」上面下面的文本(所以它在文件中的第一件事):上放什麼在這個用法字符串可以

""" 
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/