我正在使用python执行对文件的写入,而递归地抓取数据。由于没有检索数据的顺序,因此每次写入时都会实现不同的数据顺序,这就产生了问题。是否可以借助其内容对文件的数据进行排序?
def search(l,new_result_set=["90058"]):
"""defines the search function"""
#90058 = Vishal Sharma's ID
#defines the list to which the names must be appended
name_result=[]
#gets the manager IDs
print "Searching" + "." * 5 + "\n"
base = "ou=active, ou=employees, ou=people, o=cisco.com";
scope = ldap.SCOPE_SUBTREE
#specifies that all the attributes of the entry should be returned
retrieve_attributes = None
#result_set = []
#specifies the amount of time that we are willing to wait
#for response from the server
timeout = 0
try :
for item in new_result_set:
#opens the file for appending the data to
file_manager = open(filename , 'a')
#file_update = open("update.txt" , 'w')
search_filter = "(&(city=Bangalore)"+"(manageruid=" + item +"))"
result_id = l.search(base, scope, search_filter, retrieve_attributes)
#results append to this list
result_set = []
while 1:
result_type, result_data = l.result(result_id,timeout)
if(result_data == []):
break
else:
"""appends the data to result_set"""
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
name_result=[]
if len(result_set) == 0:
#uncomment this later
#print "No Results."
continue
else:
for i in range(len(result_set)):
for entry in result_set[i]:
name = entry[1]['cn'][0]
title = entry[1]['title'][0]
empNO = entry[1]['employeeNumber'][0]
#location = entry[1]['floor'][0] + " " + "floor" + " ," + "building : " + entry[1]['building'][0] + " , "+ entry[1]['city'][0]
managerID = entry[1]['manageruid'][0]
manager = entry[1]['manager'][0]
status = entry[1]['status'][0]
uid = entry[1]['uid'][0]
name_result.append(empNO)
#writes data to file_manager
file_manager.write("\n")
file_manager.write( "Name : " + name + "\n")
file_manager.write( "Title : " + title + "\n")
file_manager.write( "Employee number : " + empNO + "\n")
file_manager.write("Status : " + status + "\n")
#file_manager.write( "Location : " + location + "\n")
file_manager.write( "User ID : " + uid + "\n")
file_manager.write( "Manager ID : " + managerID + "\n")
file_manager.write( "Manager : " + manager + "\n" )
file_manager.write( "\n" )
if (len(result_set) > 0 ):
print "Number of Direct Reportees -- >" ,len(result_set),manager
search(l,name_result)
file_manager.close()
except ldap.LDAPError , e:
print e
文件的示例内容。所有记录都如下所示。
姓名:Shajith 标题: ** * *** 员工人数:12345 状态:有效 用户ID: * 经理ID:xxxxx经理: Vishal **