переформатирование строк с включенными переменными - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть библиотека, полная переменных (которую я не хочу редактировать вручную), она выглядит так:

def get_variables(gateway):
    variables={
        'gateway':gateway, 
        'license_test_data':gateway['license_data'],
        'license_for_application':gateway['license_for_application'],
        'Valid_Login_Test_Vairables':{'valid_ssh_command':['ssh '+gateway['DeviceUnderTestUserid']+'@'+gateway['DeviceUnderTestIP'],'password:']}
        #around 3000 more just like this or worse
       }
return variables

Мне нужно импортировать эту информацию в структуру данных Python беззамена переменных 'gateway' .Другими словами, я хочу иметь возможность:

print vars['Valid_Login_Test_Vairables']['valid_ssh_command']

и получить именно это

'ssh +gateway['DeviceUnderTestUserid']+'@'+gateway['DeviceUnderTestIP'],'password:']

Вместо этого я получаю следующее:

print vars['Valid_Login_Test_Vairables']['valid_ssh_command']

"ssh gateway['DeviceUnderTestUserid']@gateway['DeviceUnderTestIP']", 'password:'

Что яя пытался это:

import varfile
import dummy.gateway
vars=varfile.get_variables(dummy.gateway)

с моим dummy.gateway, похожим на это:

gateway['license_test_data'] = "gateway['license_test_data']"
gateway['license_for_application'] = "gateway['license_for_application']"
gateway['license_for_setup'] = "gateway['license_for_setup']"

Что я могу сделать, чтобы получить точное содержимое моего файла переменных в полезные данныеструктура?

1 Ответ

1 голос
/ 03 декабря 2011

Я нашел ваш вопрос несколько сложным для понимания, но если мне удалось сделать это правильно, следующее выдает то, что вы сказали, что вы хотели от того, что у вас есть.

# used as a stand-in for your 'import dummy.gateway'
dummy_gateway = {}
dummy_gateway['license_test_data'] = "gateway['license_test_data']"
dummy_gateway['license_for_application'] = "gateway['license_for_application']"
dummy_gateway['license_for_setup'] = "gateway['license_for_setup']"
dummy_gateway['DeviceUnderTestUserid'] = "gateway['DeviceUnderTestUserid']"
dummy_gateway['DeviceUnderTestIP'] = "gateway['DeviceUnderTestIP']"

# your example code corrected and reformatted to be slightly more readable
def get_variables(gateway):
    variables={
        'gateway':gateway,
        'license_test_data':gateway['license_test_data'],
        'license_for_application':gateway['license_for_application'],
        'Valid_Login_Test_Vairables':{
            'valid_ssh_command':
                ['ssh '+gateway['DeviceUnderTestUserid']+'@'+
                    gateway['DeviceUnderTestIP'],
                 'password:']
            }
        #around 3000 more just like this or worse
       }
    return variables

vars = get_variables(dummy_gateway)
print vars['Valid_Login_Test_Vairables']['valid_ssh_command']

Результат, который является list состоит из двух строк:

["ssh gateway['DeviceUnderTestUserid']@gateway['DeviceUnderTestIP']",'password:']

Надеюсь, это поможет.

PS Кстати, имя vars конфликтует с именем встроенной функции Python в стандартной библиотеке, поэтому использование его в качестве имени одной из ваших переменных обычно считается плохой практикой программирования, даже когда это работает, как в этом случае, насколько это возможно.

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