重新启动下载api csv文件Python

2024-06-26 13:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

如果url超时失败,我想创建一个函数来下载文件。我的问题是url超时,因为有时候csv文件比它需要更多的时间,所以我需要不断尝试下载。我在我的功能上添加了重新启动点,然后"FAIL...,但它只尝试了一次

28行是超时失败时的行

def main():
    este_mes('https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=31/12/2017&fecha_fin={}'.format(fecha) + '&intipo_id=16&informe_id=955&o=csv')

    este_mes_pais('https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=01/01/2018&fecha_fin={}'.format(fecha) + '&intipo_id=16&informe_id=752&o=csv')
    f = open("este_mes_pais.csv")
    numlines = len(f.readlines())
    if numlines <= 28:
        print "FAIL, reintentando..."
        este_mes_pais('https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=01/01/2018&fecha_fin={}'.format(fecha) + '&intipo_id=16&informe_id=752&o=csv')
    else:
        print "este_mes_pais Descargado"

Tags: csvhttpsidnetadminstatsestepub
1条回答
网友
1楼 · 发布于 2024-06-26 13:56:27

一个带有True条件的简单while循环就可以了。如果行数超过28行,则中断循环(请注意,这可以在不使用迭代器读取整个文件的情况下完成),否则打印错误消息并保持循环运行:

while True:
    este_mes_pais('https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=01/01/2018&fecha_fin={}'.format(fecha) + '&intipo_id=16&informe_id=752&o=csv')
    with open("este_mes_pais.csv") as f:
        #numlines = len(f.readlines())  # classic approach
        # faster if the file is big, won't read more than 29 lines
        numlines = sum(next(f,None) is not None for _ in range(29))

    if numlines <= 28:
        print "FAIL, reintentando..."
    else:
        break  # OK, get out of the loop

相关问题 更多 >