URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10033
[ Назад ]

Исходное сообщение
"В цикле while не работает второе условие"

Отправлено qazarus , 30-Авг-15 12:59 
Итак, есть железка, при подключении отображается дев, в который мне нужно отсылать команду, и слушать ответ. Для этого использую такой вот скрипт:


f = open("/dev/skynet", "r+")
data = ''
print >> f, "run\r\n"
while data[:8]!="doomsday":
    data=f.readline()
print data
f.close

Все работает, но за некоторых условий ответа не следует, в итоге скрипт зависает в ожидании долгожданного ответа. Вот эту проблему мне и надо решить.
Так как с питоном познакомился чуть ли не вчера, я не придумал ничего умнее, как добавить к циклу отсчет так сказать, и в случае 10 считывания строки отрубать цикл:


f = open("/dev/skynet", "r+")
data = ''
count = 10
print >> f, "run\r\n"
while (data[:8]!="doomsday") or (count != 0):
    data=f.readline()
    count = count - 1
print data
f.close

Ну так вот, не работает это. В итоге не работает второй аргумент, да еще и перестает работать первый.
Дайте совет как исправить это, или как сделать покрасивее.


Содержание

Сообщения в этом обсуждении
"В цикле while не работает второе условие"
Отправлено asavah , 30-Авг-15 15:52 
   if not data:
       time.sleep(1)
       continue


итд

книжки читай да ив гуголе примеров хоть завались


"В цикле while не работает второе условие"
Отправлено qazarus , 30-Авг-15 16:03 
> книжки читай да ив гуголе примеров хоть завались

Эмм... Я что-то не понял, при чем тут if? Меня интересуют два правила в цикле. Я ему про Фому, он мне про Ерему... Не знаем - проходим мимо.
Я то уже сделал, но мне, все-же, интересно что еще мне тут насоветуют. Наверно дальше посоветуют железку перепаять...


"В цикле while не работает второе условие"
Отправлено pavlinux , 30-Авг-15 17:52 
>> книжки читай да ив гуголе примеров хоть завались
> Эмм... Я что-то не понял, при чем тут if? Меня интересуют два
> правила в цикле.

Это же питонятина, там табы и пробелы важны  


"В цикле while не работает второе условие"
Отправлено Аноним , 30-Авг-15 16:33 
>[оверквотинг удален]
> f = open("/dev/skynet", "r+")
> data = ''
> count = 10
> print >> f, "run\r\n"
> while (data[:8]!="doomsday") or (count != 0):
>     data=f.readline()
>     count = count - 1
> print data
> f.close
>

or на and смени, и будет щястье