2017-10-12 6 views
1

J'ai un script qui accède à un site Web plus de 100 fois et que vous souhaitez ajouter un petit délai entre chaque élément. Aussi, si possible, peut-être ajouter un compte à rebours ou une barre de processus affichant le statut ou le nombre d'éléments restants. L'exemple de code est ci-dessous;Ajouter une pause à une boucle for-in

import pandas as pd 

urls = ['https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeIdYear/makeId/440/vehicletype/car?format=csv', 
    'https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeIdYear/makeId/441/vehicletype/car?format=csv', 
    'https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeIdYear/makeId/442/vehicletype/car?format=csv', 
    'https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeIdYear/makeId/443/vehicletype/car?format=csv', 
    'https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeIdYear/makeId/445/vehicletype/car?format=csv', 
    'https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeIdYear/makeId/448/vehicletype/car?format=csv']    


dfs = [pd.read_csv(url) for url in urls] 
df = pd.concat(dfs, ignore_index=True)                      
df.to_csv('foo.csv')                           
+0

Lisez à propos de 'tqdm' pour une barre de compte à rebours et' time.sleep' pour suspendre l'exécution. – user1190882

+0

Curieux - pourquoi voulez-vous ajouter une pause? – Parfait

+0

@Parfait parce que l'exécution du script accède au même serveur si rapidement après tant de demandes de serveur, le serveur le bloque. –

Répondre

3
import time 
dfs = [] 
num = len(urls) 
for i, url in enumerate(urls): 
    dfs.append(pd.read_csv(url)) 
    print 'Process {}, {} left'.format(i+1, num-i-1) 
    time.sleep(2) 
+0

Génial! Fonctionne parfaitement! –

+0

@KyleRichards :) – galaxyan