重新开始下载api csv文件Python

重新开始下载api csv文件Python,python,csv,Python,Csv,如果url超时失败,我想创建一个函数来下载文件。我的问题是url超时,因为有时候csv文件比它需要更多的时间,所以我需要不断尝试下载。我在功能上添加了重新启动点,然后失败…,但它只尝试一次 28行是超时失败时的行 def main(): este_mes('https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=31/12/2017&fecha_fin={}'.form

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

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"
def main():
埃斯特梅斯酒店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')
埃斯特梅斯派斯酒店https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=01/01/2018&fecha_fin={}.格式(fecha)+'&intipo_id=16&informe_id=752&o=csv')
f=开放(“este_mes_pais.csv”)
numlines=len(f.readlines())

如果numlines一个简单的
while
循环和
True
条件就可以了。如果行数超过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
为True时:
埃斯特梅斯派斯酒店https://a.net/admin/adnet/pub/stats/informe.csv?fechashortcut_id=0&fecha_inicio=01/01/2018&fecha_fin={}.格式(fecha)+'&intipo_id=16&informe_id=752&o=csv')
打开(“este_mes_pais.csv”)作为f:
#numlines=len(f.readlines())#经典方法
#如果文件很大,读取的行数不会超过29行,则速度会更快
numlines=sum(对于范围(29))中的uu,next(f,None)不是None)

如果numlines正常,但是
如果numlines,循环将重新启动下载。
break
在行数大于28时退出循环。请尝试。