Python Docopt函数参数问题

Python Docopt函数参数问题,python,Python,我不完全确定如何使用所有必需的参数调用我的tasklist函数。我猜我把语法弄错了。有人能指出我的愚蠢吗 代码 #!/usr/bin/python """ Description: Used for checking users logged into a list of servers. Usage: hunter.py (-u <username>) (-p <password>) (-d <domain>) (-s <FILE>)

我不完全确定如何使用所有必需的参数调用我的
tasklist
函数。我猜我把语法弄错了。有人能指出我的愚蠢吗

代码

#!/usr/bin/python

"""
Description:

Used for checking users logged into a list of servers.

Usage:
  hunter.py (-u <username>) (-p <password>) (-d <domain>) (-s <FILE>)
  hunter.py -h | --help
  hunter.py --version

Options:
  -u --username
  -h --help     Show this screen.
  --version     Show version.
  -p --password
  -d --domain
  -s --serverfile=FILE
  """
from docopt import docopt
import subprocess
from subprocess import CalledProcessError

def tasklist(serverlist, domain, username):
    for serverl in serverlist():
        try:
            print "%s Services Listed Below" % serverl
            cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq $s"' % serverl, domain, username, domain
            print cmd
            subprocess.check_output(cmd)
        except CalledProcessError as e:
            print(e.returncode)

def getservers(servers):
        slist = open(servers).readlines()
        return [s.replace('\n', '') for s in slist]

if __name__ == "__main__":
    arguments = docopt(__doc__, version='0.1a')
    print arguments
    serverlist = getservers(arguments['--serverfile'])
    print serverlist
    tasklist(serverlist,(arguments['<domain>'], ['<username>']))
tasklist()
函数需要3个参数,您只需要传递两个参数。替换:

tasklist(serverlist,(arguments['<domain>'], ['<username>']))
此外,替换:

cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq $s"' % serverl, domain, username, domain
与:


希望能有所帮助。

谢谢我现在得到了
回溯(最近一次调用):文件“C:\Python27\hunter.py”,第44行,在任务列表中(serverlist,arguments[''),arguments['')文件“C:\Python27\hunter.py”,第26行,在serverlist()中的serverl的任务列表中:TypeError:“list”对象不可调用
谢谢我知道它一定很简单。在修复上述代码中的
$s
之后,还有一个问题。我在任务列表(serverlist,arguments['',arguments[''])中的文件“C:\Python27\hunter.py”,第44行;任务列表cmd='tasklist/V/S%S-u%S\%S/FI“USERNAME eq%S”'%serverl,domain,u sername,domain TypeError:没有足够的参数用于格式化字符串`
tasklist(serverlist, arguments['<domain>'], arguments['<username>'])
for serverl in serverlist:
cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq $s"' % serverl, domain, username, domain
cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq %s"' % (serverl, domain, username, domain)