gentoo, медицина, python
Доброго времени суток, уважаемые.
Понимаю, вопрос немного не по теме форума, но знаю, что здесь есть те, кто знает питон.
Есть желание переписать кое-какие медицинские программки для работы в линукс (программки для снятия показаний с некоторых приборов). Некоторые части уже переписываются на Си. Проблема в том, что практически все эти части консольные и работать с ними пока нельзя, потому как никакой интерактивности нет. Поэтому возникло желание нарисовать оболочку для сего (а заодно и что-то новое изучить :)). Начал читать и изучать питон. Есть некоторые вопросы по нему:
1: Есть директория, в ней может быть несколько поддиректорий в них файлы "*.elog". Нужно обойти все директории и собрать все имена (с полными путями). как это сделать?
2: вызываю процесс
s0, s1, s2 = os.popen3("analizer /data/0001/20080106/001.elog")
теперь этот анализер пишет на s1 то, что откопал, на S2 ошибки. А как мне сделать, чтобы следить за s1 и s2 одновременно?
ну то есть если я сделаю s1.readline() и в это время что-то придет на s2 то я это пропущу и вообще зависну. Кстати по поводу "зависну" 3 вопрос:
3: как ограничить время ожидания readline?
На сим пока все.
Заранее спасибо.
PS: сильно не ругайтесь, я раньше вообще ни на чем не программировал. :) если уж совсем против правил такие вопросы тут, то может подскажите форум, где помогут?
- Для комментирования войдите или зарегистрируйтесь
Как вариант:proc
Как вариант:
и в цикле...
тут блокировки не будет. Но это не все проблемы, есть ещё буферизация в пайпах, что для интерактивности и синхронности вредно, лучше поискать на форумах по пайтону. Здесь: http://python.com.ua/forum/ например, и поиск, сразу в поиск.
Вот, например: http://python.com.ua/forum/viewtopic.php?id=1470
prof-alex Спасибо
prof-alex Спасибо за ссылку на форум :)
а вот proc = popen2.Popen4(command) что-то не понял :(
>>> proc = os.popen2.Popen4('ls -la')", line 1, in ?
Traceback (most recent call last):
File "
AttributeError: 'function' object has no attribute 'Popen4'
1) find -name '*.elog' 2)
1) find -name '*.elog'
2) "analizer /data/0001/20080106/001.elog 2>&1" +
http://www.google.com/search?q=%222%3E%261%22
Это у вас "Есть желание переписать"? Это вы "некоторые части уже переписываете на Си"?
Части на Си
Части на Си переписываю не я.
обход директорий
1.
import os, re
elogs = []
for root, dirs, files in os.walk('.'):
elogs += map(lambda x: os.path.join(root.x), filter(lambda x: re.match("^.*.elog$", x) and x, files))
OpenVista CIS
Вы это видели http://openvista.sourceforge.net/
Может стоит Вам с ними попобщатся?