Python: [Errno 32] Broken pipe异常分析

今天在写远程下载循环遍历远程目录和下载的时候碰到了报错

 [Errno 32] Broken pipe

Errno 32] Broken pipe异常属于IOError,因此此问题和IO操作有关,然后检查相关的业务逻辑,除了一个巨长的远程遍历目录,其他的基本应该没有什么大的问题,初步觉得是这个问题导致,后面将代理做了下微调,解决。

因为每天都要下载当前的文件,文件有历史存档,每次循环整个目录的文件列表是非常消耗资源的,但是想到文件名是有规律的,所以就判断下是不是当前文件,文件名基本是这样的20190415xxx.log

所以我加了个yield生成器来造一个新的列表生成器,原本整个目录的几十万文件,最后只需要处理几千个,瞬间内存CPU轻松了很多,真替它们高兴,然后我的主要代码还是贴出来下:

def rtn_new_list(file_list):
    now_time = int(time.time())
    now_day_array = time.localtime(now_time)
    now_day = time.strftime("%Y%m%d", now_day_array)
    for p in ftp_file_list:
        if p.startswith(now_day):
            yield p

然后就是非常非常快的处理我需要的今日文件了,看来还是日常代码写太少了,没事还得多写实际项目练手

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/648.html