通过内容对文件进行排序

时间:2014-03-07 04:46:03

标签: python python-2.7 python-ldap

我正在使用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 **

0 个答案:

没有答案