LINUX.ORG.RU
ФорумAdmin

Ldap - запрос в Python

 ,


2

2

Вопрос может и глупый, но языками программирования давно не занималась, потому сама не могу решить. Мне всего-то нужно взять список никнеймов из сервера ldap и занести в файл. Прога почему-то игнорирует первого пользователя, т.е. заносит в файл все ники кроме самого первого. Вот код:

#!/usr/bin/python
# -*- coding: utf-8
import sys
import codecs
import ldap
dn = "ou=____,dc=____,dc=____"
con = ldap.initialize('ldap://_____________')
base_dn = 'ou=_____,dc=____,dc=____'
filter = '(objectclass=______)'
attrs = ['uid']
res = con.search_s( base_dn, ldap.SCOPE_SUBTREE, filter, attrs )
for r in res:      
	m=r[1]['uid'][0]     
#       print m
	for s in m:
		sys.stdout =open("/home/...../user1.txt","a")


Ответ на: комментарий от Kilte

Что такое m? Что такое s?

напиано же

for s in m

меня больше волнует, что такое «_____»? это какая-то питоновская техника программирования, или автор(ша) просто не умеет в foo.bar.baz.example.org?)

даже objectclass и тот уникально-секретный!

mos ★★☆☆☆
()
for r in res:      
	m=r[1]['uid'][0]     
#       print m
	for s in m:
		sys.stdout =open("/home/...../user1.txt","a")

Для первого вызова print m, значение sys.stdout будет стандартным и в файл не уйдёт m.

P.S. Иди читать, как корректно писать в файлы на Python. Подменять sys.stdout, как по мне, моветон.

Norgat ★★★★★
()
Последнее исправление: Norgat (всего исправлений: 2)
Ответ на: комментарий от mos

авторша умеет, просто данные светить не хочет. Тут вопрос относился конкретно к циклу

RabBiT
() автор топика

Вообще-то задача уровня 7го класса церковно-приходской школы. Может проще найти кого кто знает Python?

anonymous
()
Ответ на: комментарий от anonymous

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

RabBiT
() автор топика
Ответ на: комментарий от Norgat

спасибо, хоть кто-то что-то дельное написал)

RabBiT
() автор топика
Ответ на: комментарий от anonymous

С with не нужно делать вызов f.close(). close автоматически вызовется при выходе из with блока.

Norgat ★★★★★
()
Ответ на: комментарий от anonymous

Конечно же

toFile = ''

for r in res:      
    toFile += r[1]['uid'][0]

with open('/home/...../user1.txt', 'a') as f:
    f.write(toFile)
    f.close()

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.