2017-02-14 39 views
0

hi У меня есть следующий блок тестового кода (тестовая лаборатория).Передача переменной в команду - недостаточно аргументов для строки формата

#<snip> 
client_mac = 'f8:cf:c5:a4:a2:84' 
#<snip> 
# issue a command1 
my_command_output1 = my_wlc_session.sendcommand("grep include f8:cf:c5:a4:a2:84 \"show client summary\" \n") 
# print the output 
print(my_command_output1) 
# 
# issue a command2 
my_command_output2 = my_wlc_session.sendcommand("grep include %s \"show client summary\" \n") % client_mac 
# print the output 
print(my_command_output2) 
#<snip> 

Command1 работает должным образом.

Но command2 - проблема. Мне нужен какой-то способ передать client_mac команде, но код, который я использую, приводит к этому;

TypeError: not enough arguments for format string 

Я думаю, что это что-то делать с/п, но мне нужен 2-ой новой строки после команды для ее выполнения.

Есть ли лучший способ передать client_mac? Или я делаю что-то еще неправильно.

+1

Проверьте круглые скобки. – user2357112

ответ

0

Ваша проблема код здесь:

("grep include %s \"show client summary\" \n") % client_mac 

Ваш % client_mac должен быть внутри скобок со строкой форматирования вы его в ("Grep включают% s \ msgstr "показать справку клиента \" \ n ").

Ошибка означает, что вы указали строку формата (%s), но не включили переменную для вставки (потому что она находилась вне скобки и, следовательно, не являлась частью выражения).

Перечитав свой вопрос, я считаю, что источником вашего замешательства является то, что вы думали, что передаете несколько аргументов своей функции. Фактически вы просто передаете один аргумент, строку (которую вы форматируете для включения client_mac).

1

Ваши закрывающие круглые скобки, кажется, в пути. Попробуйте:

my_command_output2 = my_wlc_session.sendcommand("grep include %s \"show client summary\" \n" % client_mac) 

Пока вы на него, новый .format() становится все более популярным, и делает ошибки, как это немного легче заметить. Это было бы выглядеть следующим образом:

my_command_output2 = my_wlc_session.sendcommand("grep include {} \"show client summary\" \n".format(client_mac))