ax
представляет собой двумерный массив с формой (2, 2). Следовательно, each_ax
является одномерным массивом с формой (2,). Вы должны получить доступ к каждому элементу отдельно. Например:
for row in ax:
for each_ax in row:
each_ax.legend(['Male', 'Female'])
Попытайтесь использовать disable_interspersed_args()
#!/usr/bin/env python
from optparse import OptionParser
parser = OptionParser()
parser.disable_interspersed_args()
parser.add_option("-v", action="store_true", dest="verbose")
(options, args) = parser.parse_args()
print "Options: %s args: %s" % (options, args)
Когда выполнено:
$ ./options.py foo -v bar Options: {'verbose': None} args: ['foo', '-v', 'bar'] $ ./options.py -v foo bar Options: {'verbose': True} args: ['foo', 'bar'] $ ./options.py foo -a bar Options: {'verbose': None} args: ['foo', '-a', 'bar']
Экземплярами OptionParser можно на самом деле управлять во время операции парсинга для сложных случаев. В этом случае, однако, я верю сценарию, который Вы описываете, поддерживается out-of-the-box (который был бы хорошими новостями если верный! как часто это происходит??). Посмотрите этот раздел в документах: Запросы и управление Вашим синтаксическим анализатором опции.
Заключить ссылку в кавычки выше:
disable_interspersed_args ()
Парсинг набора для остановки на первой неопции. Используйте это, если у Вас есть командный процессор, который выполняет другую команду, которая имеет собственные опции, и Вы хотите удостовериться, что эти опции не запутываются. Например, каждая команда могла бы иметь различный набор опций.
from optparse import OptionParser
import subprocess
import os
import sys
parser = OptionParser()
parser.add_option("-q", "--quiet",
action="store_true", dest="quiet", default=False,
help="don't print output")
parser.add_option("-s", "--signal",
action="store_true", dest="signal", default=False,
help="signal end of program and return code")
parser.disable_interspersed_args()
(options, command) = parser.parse_args()
if not command:
parser.print_help()
sys.exit(1)
if options.quiet:
ret = subprocess.call(command, stdout=open(os.devnull, 'w'),
stderr=subprocess.STDOUT)
else:
ret = subprocess.call(command)
if options.signal:
print "END OF PROGRAM!!! Code: %d" % ret
Можно использовать сценарий удара как это:
#!/bin/bash
while [ "-" == "${1:0:1}" ] ; do
if [ "-v" == "${1}" ] ; then
# do something
echo "-v"
elif [ "-s" == "${1}" ] ; then
# do something
echo "-s"
fi
shift
done
${@}
$ дает Вам остальную часть командной строки, которая не была использована вызовами сдвига. Для использования ssh, Вы просто изменяете строку от $ к ssh $ {пользователь} $ {хост} $
test.sh повторяют bla
bla
test.sh-v повторяют bla
- v
bla
test.sh-v-s повторяют bla
- v
- s
bla