Функция, которую я пытаюсь создать, находит порт модема, отвечающий за AT-команды. Я пытаюсь сделать разные экземпляры serial.Serial() локальными для разных циклов. Я искал информацию в документации, которую смог найти, но ни один из тех, что я нашел, никоим образом не упомянул об этом (если это где-то есть, и я пропустил это, пожалуйста, не стесняйтесь выставлять меня глупым и ссылаться на это). Например:
OpenPorts = []
j=[]
for modem in PortList: #This opens every Modem
for port in modem:
try:
j=[]
print port
ser = serial.Serial(port, 9600, timeout=1)
ser.close()
ser.open()
j.append(port)
except serial.SerialException:
continue
OpenPorts.append(j)
print OpenPorts
del j
del ser
Это работает. Но когда я пытаюсь это:
for port in OpenPorts:
if port is not '':
ser = serial.Serial(port, 9600, timeout=1)
ser.write('ati')
del ser
Я получаю «TypeError: можно только объединить список (не «int») в список»
Мне нужно, чтобы они были локальными для циклов, потому что я открываю несколько портов из установленного списка используемых портов (собранного из другого файла). Я должен использовать несколько циклов, потому что мне нужно использовать time.sleep(), прежде чем ser.read() что-нибудь вернет. Есть ли способ сделать это таким образом, или это вернуться к чертежной доске?
OpenPorts.extend(j)
вместоOpenPorts.append(j)
? serial.Serial не работает со списком в качестве первого аргумента, насколько я знаю. - person mguijarr   schedule 04.10.2013