代码优化问题

写了一个逻辑上的代码,总觉得有问题,运行的也不对,现贴出来拜托大神们优化一下:

def handle_doc(self):
        '''
        初始化待处理文件列表页面,获得第一个文件的id号,如果有,则进行文件处理,如果没有则无待处理文件:
        一、跳转到该文件页面;
        二、获取该文件领导批示内容
        三、处理该文件
        1.如果批示内容为空:则录入execl,下载附件文件,提交部门领导审核
        2.如果批示内容不为空:说明已处理,则将批示内容更新至execl,根据批示内容进行下步处理        
        '''
        docs = DocsPage(self.driver)     #实例化待处理文件列表页面
        unid = docs.get_first_doc_unid()#获得第一个需要处理的文件的unid
        while unid:                        #如果存在待处理文件
            doc = DocPage(self.driver)    #实例化文件页面
            doc.open(url_parse.get_doc_url(unid))#打开该文件页面
            title = doc.get_doc_title()    #获得文件标题
            logger.info('正处理《%s》文件.' % title)
            if doc.get_approval():        #如果已批示,取得该文件领导批示
                logger.info('《%s》文件已被部门领导批示.' % title)
                data_lines.update_execl(unid, doc.get_approval()) #将领导批示更新到execl中
                #do some thing
                doc.finish_doc()        #结束处理
                break                    #break?
            else:                        #未批示文件
                logger.info('《%s》已接收,现进行写入数据库、下载文件附件、提交部门领导批示操作.' % title)
                data_lines.insert_execl(doc.get_doc_info())#写入execl
                data_lines.download_file('url', 'file_path', 'file_name')#下载文件附件
                doc.to_leader()            #提交领导批示
            doc.open(url_parse.get_default_url())    #处理完一个文件,跳转至待处理文件列表页面
            doc.refresh()
            self.handle_doc()                        #重新执行该函数
        else:
            logger.info('已处理完所有文件')

希望也能给出一些建议

Jason990420
最佳答案
def handle_doc(self):
    '''
    初始化待处理文件列表页面,获得第一个文件的id号,如果有,则进行文件处理,
    如果没有则无待处理文件:
    一、跳转到该文件页面;
    二、获取该文件领导批示内容
    三、处理该文件
    1.如果批示内容为空:则录入execl,下载附件文件,提交部门领导审核
    2.如果批示内容不为空:说明已处理,则将批示内容更新至execl,根据批示内容进行下步处理
    '''
    docs = DocsPage(self.driver)                #实例化待处理文件列表页面
    unids = docs.get_all_doc_unid()             #获得所有需要处理的文件的unid
    doc = DocPage(self.driver)                  #实例化文件页面

    for unid in unids:

        doc.open(url_parse.get_doc_url(unid))   #打开该文件页面
        title = doc.get_doc_title()             #获得文件标题
        logger.info('正处理《%s》文件.' % title)#<标题可能相同,最好加上unid>

        if doc.get_approval():                  #如果已批示,取得该文件领导批示
            logger.info('《%s》文件已被部门领导批示.' % title)
            data_lines.update_execl(unid, doc.get_approval())
            doc.finish_doc()                    #结束处理 (do some thing)

        else:
            logger.info('《%s》已接收,现进行写入数据库、下载文件附件、'
                        '提交部门领导批示操作.' % title)
            data_lines.insert_execl(doc.get_doc_info())     #写入execl
            #下载文件附件,提交领导批示
            data_lines.download_file('url', 'file_path', 'file_name')
            doc.to_leader()

    if unids:
        logger.info(f'已处理完{len(unids)}个文件')
    else:
        logger.info('没有文件待处理')
4年前 评论
joeyun (楼主) 4年前
joeyun (楼主) 4年前
Jason990420 (作者) 4年前
讨论数量: 2
Jason990420
def handle_doc(self):
    '''
    初始化待处理文件列表页面,获得第一个文件的id号,如果有,则进行文件处理,
    如果没有则无待处理文件:
    一、跳转到该文件页面;
    二、获取该文件领导批示内容
    三、处理该文件
    1.如果批示内容为空:则录入execl,下载附件文件,提交部门领导审核
    2.如果批示内容不为空:说明已处理,则将批示内容更新至execl,根据批示内容进行下步处理
    '''
    docs = DocsPage(self.driver)                #实例化待处理文件列表页面
    unids = docs.get_all_doc_unid()             #获得所有需要处理的文件的unid
    doc = DocPage(self.driver)                  #实例化文件页面

    for unid in unids:

        doc.open(url_parse.get_doc_url(unid))   #打开该文件页面
        title = doc.get_doc_title()             #获得文件标题
        logger.info('正处理《%s》文件.' % title)#<标题可能相同,最好加上unid>

        if doc.get_approval():                  #如果已批示,取得该文件领导批示
            logger.info('《%s》文件已被部门领导批示.' % title)
            data_lines.update_execl(unid, doc.get_approval())
            doc.finish_doc()                    #结束处理 (do some thing)

        else:
            logger.info('《%s》已接收,现进行写入数据库、下载文件附件、'
                        '提交部门领导批示操作.' % title)
            data_lines.insert_execl(doc.get_doc_info())     #写入execl
            #下载文件附件,提交领导批示
            data_lines.download_file('url', 'file_path', 'file_name')
            doc.to_leader()

    if unids:
        logger.info(f'已处理完{len(unids)}个文件')
    else:
        logger.info('没有文件待处理')
4年前 评论
joeyun (楼主) 4年前
joeyun (楼主) 4年前
Jason990420 (作者) 4年前
Jason990420
  1. doc = DocPage(self.driver) 实例化文件页面作一次就好
  2. unids = docs.get_all_doc_unid() 一次页面处理, 不要 unid = docs.get_first_doc_unid() 读一个, 刷新一次, 多次页面处理
  3. self.handle_doc() 不是重新执行, 是递归的
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!