2017-02-20 32 views
-1

Я использую python для связи с генератором осциллографа и генератора сигналов через usbmtc, и иногда меняют порты USB.Как игнорировать OSError: [Errno 2] в Python, os linux, usbtmc

Так что я написал функцию для определения текущего устройства:

for x in range(0, 3): 
    dev= '/dev/usbtmc' + str(x) 
    currentUsb = usb.tmc(dev) 
    currentUsb.write("*IDN?") 
    name = currentUsb.read(300) 
    if name.find('DSO') >-1: 
     scope= usb.tmc(dev) 
     print 'scope ' 
    elif name.find('33621A') >-1: 
     waveform = usb.tmc(dev) 
     print 'waveform' 

Но если у меня нет устройства usbtmc1 подключен, то у меня есть следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "testKEY.py", line 28, in <module> 
    currentUsb = usb.tmc(dev) 
    File "/home/ivan/Desktop/novosound/novosound/usb.py", line 8, in __init__ 
    self.FILE = os.open(device, os.O_RDWR) 
OSError: [Errno 2] No such file or directory: '/dev/usbtmc1 

Есть есть ли какие-либо варианты игнорировать ошибку?

+0

@SiddheshMhatre, пропуск правильный, и первая часть кода работает. , так что у меня есть: waveform, а затем ошибка –

ответ

2

Используйте встроенный try, чтобы игнорировать ошибки в Python.

Соединив с logging, вы можете зарегистрировать ошибку на экране или в файл.

import logging 

for x in range(0, 3): 
    dev= '/dev/usbtmc' + str(x) 
    try: 
     currentUsb = usb.tmc(dev) 
     currentUsb.write("*IDN?") 
     name = currentUsb.read(300) 
     if name.find('DSO') >-1: 
      scope= usb.tmc(dev) 
      print 'scope ' 

     elif name.find('33621A') >-1: 
      waveform = usb.tmc(dev) 
      print 'waveform' 
    except OSError: 
     logging.info('Something is wrong') 
     pass 
+0

Большое спасибо за ваш ответ, просто попробовал ваш код, но он не сработал. Но ты дал мне очень хороший указатель, что я могу сделать! –

+0

Мой код измельчается до цикла if, в следующей строке: currentUsb = usb.tmc (dev) –

+0

@IvanShorokhov Попробуйте код еще раз. Я исправил это. –