Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2010 07:36:49

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

Print limit!!!

Всем привет!
Есть вывод:
10.1.11.6
10.1.11.8
10.1.11.22
10.1.11.23
10.1.11.24
10.1.11.25
10.1.11.26

вывод может быть из 200 строк и более.
как задать вывод чтобы показывал например первые 5 строк. Например как mysql select * from user_log limit 2;



Офлайн

#2 Март 10, 2010 09:59:44

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Print limit!!!

Можно код, который делает вывод?



Офлайн

#3 Март 10, 2010 10:30:56

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

Print limit!!!

regall
Можно код, который делает вывод?
a1 = raw_input("Input ipadd or vlan:")

def search():
if '10.' in a1:
a2 = '%s.%s.%s.' %(a1.split('.')[0],a1.split('.')[1],a1.split('.')[2])
host(a2)
elif not '.' in a1:
for fname in glob.glob('/etc/iptab/vlan%s.txt' %a1):
for line in open(fname):
if 'vlanident' in line:
a2 = '%s.%s.%s.' %((line.split()[5]).split('.')[0], (line.split()[5]).split('.')[1], (line.split()[5]).split('.')[2])
host(a2)

def host(a2):
for y in range(1,253):
host = '%s%s' %(a2, y)
date = fin(host)
if date:
ip = date
else:
ip = "[!IP_ADDRESS FREE!]"
res = '%s\t%s' %(host, ip)
if 'FREE' in res:
print res

def fin(host):
for fname in glob.glob('/etc/iptab/vlan*.txt'):
for line in open(fname):
if not '#' in line and host in line:
return line.split()[0]



Офлайн

#4 Март 10, 2010 11:27:12

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Print limit!!!

if 'FREE' in res and y <=5:
print res



Офлайн

#5 Март 10, 2010 12:19:08

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

Print limit!!!

regall
if 'FREE' in res and y <=5:
print res
этот код не выход из ситуации, т.к. y=1-252, следовательно если занято с 1-6 то вывода не будет.



Офлайн

#6 Март 10, 2010 12:38:37

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Print limit!!!

def host(a2):
free_count = 0
for y in range(1,253):
host = '%s%s' %(a2, y)
date = fin(host)
if date:
ip = date
else:
ip = "[!IP_ADDRESS FREE!]"
res = '%s\t%s' %(host, ip)
if 'FREE' in res and free_count < 5:
free_count += 1
print res



Отредактировано (Март 10, 2010 12:38:53)

Офлайн

#7 Март 10, 2010 13:09:33

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

Print limit!!!

regall
def host(a2):
free_count = 0
for y in range(1,253):
host = '%s%s' %(a2, y)
date = fin(host)
if date:
ip = date
else:
ip = "[!IP_ADDRESS FREE!]"
res = '%s\t%s' %(host, ip)
if 'FREE' in res and free_count < 5:
free_count += 1
print res
regall, Спасибо большое, еще и напомнил.



Офлайн

#8 Март 10, 2010 13:30:30

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Print limit!!!

А я бы такую утилиту на генераторах строил. Что-то типа:

def find_files(pattern):
if pattern.startswith('10.'):
yield '.'.join(pattern.split('.')[:-1])
elif not '.' in pattern:
for fname in glob.glob('/etc/iptab/vlan%s.txt' % pattern):
for line in open(fname):
if 'vlanident' in line:
yield '.'.join(line.split()[5].split()[:-1])

def find_ip(host):
for fname in glob.glob('/etc/iptab/vlan*.txt'):
for line in open(fname):
if not '#' in line and host in line:
return True
return False

def find_free_ip(prefix):
for n in xrange(1, 253):
ip = '%s.%d' % (prefix, n)
if not find_ip(host):
yield ip

import sys
pattern = sys.argv[1]
count = int(sys.argv[2])

for ip in (x for x,i in enumerate(find_free_ip(find_files(pattern))) if i < count):
print ip, "[!IP_ADDRESS FREE!]"
Насколько я понял исходник автора, код естественно не тестировал :)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Март 10, 2010 17:18:20

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

Print limit!!!

PooH
А я бы такую утилиту на генераторах строил. Что-то типа:
def find_files(pattern):
if pattern.startswith('10.'):
yield '.'.join(pattern.split('.')[:-1])
elif not '.' in pattern:
for fname in glob.glob('/etc/iptab/vlan%s.txt' % pattern):
for line in open(fname):
if 'vlanident' in line:
yield '.'.join(line.split()[5].split()[:-1])

def find_ip(host):
for fname in glob.glob('/etc/iptab/vlan*.txt'):
for line in open(fname):
if not '#' in line and host in line:
return True
return False

def find_free_ip(prefix):
for n in xrange(1, 253):
ip = '%s.%d' % (prefix, n)
if not find_ip(host):
yield ip

import sys
pattern = sys.argv[1]
count = int(sys.argv[2])

for ip in (x for x,i in enumerate(find_free_ip(find_files(pattern))) if i < count):
print ip, "[!IP_ADDRESS FREE!]"
Насколько я понял исходник автора, код естественно не тестировал :)
сильно не тестировал, т.к. получил результат да и все. PooH, сейчас твой код посмотрю, я согласен может и корявый код, но так сказать чему научился, а дальше шлифовка мастерства и естественно критика и мнения других людей.



Офлайн

#10 Март 11, 2010 05:18:09

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Print limit!!!

avdoshkin
сильно не тестировал, т.к. получил результат да и все.
Я про свой код говорил :) мне его просто не на чем проверить было



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version