Создать вывод в команду Python - PullRequest
0 голосов
/ 15 октября 2018

Я работал над кодом, который будет выполнять определенную команду в python

try:
    portNumber = ('\nPlease pick a Port#: ')
    description = str('Please add  port description: ')
    config_commands = ('port set port' +portNumber
    'description' +description)
    #Should become ['port set port' +# description +description]

    print ('Accessing port')  # should be accessing th eport
    output = net_connect.send_command('port set port' [portNumber] [description]) # i 
    returns the output of the config_commands
    print (output) #should show config commands

    print ('Showing New Configuration')
    output = net_connect.send_command_expect('port show status')
    print (output) # print new config

    print ('Saving Configuration...')
    output = net_connect.send_command('configuration save') # returns output of 
    specified command
    print (output)

, но он продолжает терпеть неудачу с
любая идея?Кажется, проблема с объединением

   [root@localhost ansible]# python show.py
File "show.py", line 37
'description' +description)

output = net_connect.send_command('port set port' [portNumber] description [description]) # returns the output of the config_commands TypeError: string indices must be integers, not str

1 Ответ

0 голосов
/ 15 октября 2018
config_commands = ('port set port' +portNumber
'description' +description)

Это недопустимый синтаксис.Вы не можете объединить переменную portNumber и строковый литерал 'description' без оператора между ними.Неважно, что они на отдельных линиях.Может быть, вы намеревались объединить их с "+"?

config_commands = ('port set port' +portNumber + 'description' +description)

Не то чтобы это действительно имело значение.Вы никогда не используете переменную config_commands, поэтому вы также можете полностью удалить эту строку.

Далее,

output = net_connect.send_command('port set port' [portNumber] [description])

Если вы пытаетесь объединить 'port set port' и portNumber и description в одну строку, это не то, как вы это делаете.'port set port' [portNumber] фактически эквивалентно «вернуть символ в строке 'port set port', который находится по индексу portNumber».Но это только допустимая операция, если portNumber является целым числом.Ваш portNumber не является целым числом, это строка: '\nPlease pick a Port#: '.Если вы хотите просто объединить эти значения, вы можете сделать:

output = net_connect.send_command("port set port {} {}".format(portNumber, description))

Я не знаю, что делает команда port, но я предполагаю, что вы на самом деле не собираетесь передавать '\nPlease pick a Port#: ' в качестве первого аргумента.Если вы хотите предложить пользователю ввести число и передать его, вы, вероятно, должны использовать функцию input.

portNumber = input('\nPlease pick a Port#: ')

И аналогично для description.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...