2014-03-12 2 views
0

У меня есть код ниже, и я хотел бы почувствовать параметры карты функций во время выполнения. Это должно быть какПараметры функции в python

#devices = map(InputDevice, ('/dev/input/event15','/dev/input/event16')) 

Но когда я пытаюсь сделать это во время выполнения, это не сработает. Вот моя попытка:

readers = "" 
devices = map(InputDevice, list_devices()) 
for dev in devices: 
    if "深" in dev.name or "Barcode" in dev.name: 
     if readers == "": 
     readers = "'" + dev.fn + "'" 
     else: 
     readers = readers + ", '" + dev.fn + "'" 

devices = map(InputDevice, (readers)) 

Где читатели показывает точно '/ DEV/вход/event15', '/ DEV/вход/event16', но эта строка не работает в качестве параметра. Я думаю, это не работает из-за запятой. Кто-нибудь знает, как я могу это сделать?

Эта функция является частью evdev.

Спасибо, с настоящего момента! С уважением, Erik

ответ

1

Мне кажется, что вы хотите, чтобы readers был нестрочным итерируемым. Может быть, попробовать:

devices = map(InputDevice, readers.split(',')) 

Это поделит readers в список, а не держать его в виде строки.

Это еще не особо чистый код. Лучше было бы составить список в первую очередь:

readers = [] 
devices = map(InputDevice, list_devices()) 
for dev in devices: 
    if "深" in dev.name or "Barcode" in dev.name: 
     readers.append(dev.fn) 

devices = map(InputDevice, (readers)) 
+0

Большое спасибо. Он работает отлично. Это было именно то, что мне нужно! –

Смежные вопросы