J'ai 11 fichiers dans mon annuaire qui commence par "cas-export-". Pour chacun de ces fichiers, je souhaite extraire seulement 5 colonnes comme indiqué dans la variable «Initial_Columns», enregistrez les résultats sur un fichier de données appelé «tout_file» et écrivez le Dataframe 'tout_file' à un CSV. Parce que j'ai 11 fichiers qui correspond à "cas-export-" dans mon annuaire, je devrais avoir 11 CSV générées par mon script.
Lorsque j'exécute les scripts ci-dessous, je n'ai que 1 CSV généré et que CSV dispose de données du fichier le plus récent lu par la boucle pour la boucle. P>
date = dt.datetime.today().strftime("%m_%d_%Y") directory = '/Users/myname/Downloads/' initial_columns = ['Case #','Case Subject','Created At','Labels','Body'] for file in (glob.glob(directory + 'case-export-*')): whole_file=pd.read_csv(file, usecols = initial_columns, encoding='ISO-8859-1', index_col=None, low_memory=False).replace(np.nan, 'blank', regex=True) whole_file.to_csv(directory + 'case_export_trimmed_' + date + '_' + str(now.hour) + '_' + str(now.minute) + '_' + str(now.second) + '.csv')
3 Réponses :
Je pense que la raison de ceci est que maintenant em> est défini en dehors de la boucle que vous avez. Par conséquent, chaque fois que vous utilisez, c'est à l'aide de la même heure, de la même heure, de la même heure, du nom du fichier CSV et, par conséquent, vous écrasez le seul fichier à chaque fois. Si vous déplacez le maintenant em> Définition variable à l'intérieur de votre boucle pour la boucle, il devrait fonctionner: p> * Modifier strud>: également déplacé Date de la définition em> à l'intérieur de votre boucle pour obtenir une date précise p> Je ferais aussi ce qui suit pour générer le nom du fichier: p>
Il semble que vous auriez pu déclarer la variable «date» et «maintenant» à l'extérieur de la boucle, ce qui signifie p>
'tout_file.to_csv (répertoire +' casse_export_trimmed_ '+ date +' '+ str (maintenant.hour) +' em> '+ str (maintenant.minute) +' _ '+ STR (maintenant .seconde) + '.csv') ' p>
passera sur l'écriture sur le même fichier pour chacune des 11 itérations, vous ne verrez donc que les 11èmes détails de l'itération dans le fichier de sortie p>
Généralement, une meilleure solution à utiliser la date (heure / min / seconde), consiste à maintenir l'ancien nom de fichier mais préfixe ou suffixez-le avec TopMed: de cette façon de faire Avoir un enregistrement / compréhension plus claire de regarder les noms de fichiers ce qui s'est passé / l'intention était ... p> p>
Je pense que c'est en raison de l'utilisation du temps et de la date dans le dossier nommant. Chaque nom de fichier sera le même que la boucle complète exécutée dans
1 sec code> Utilisez plutôt
tout_file.to_csv (répertoire + 'casse_export_trimmed_' + str (i) +'CSV ') code> , incrément
i code> à chaque fois dans la boucle pour la boucle.
Une alternative est de dormir pendant une seconde entre chaque itération: D