Lorsque j'analyse des données, j'enregistre mes cadres de données dans un fichier csv et j'utilise pd.to_csv()
pour cela. Cependant, la fonction (over) écrit le nouveau fichier, sans vérifier s'il en existe un du même nom. Existe-t-il un moyen de vérifier si le fichier existe déjà, et si oui, demandez un nouveau nom de fichier?
Je sais que je peux ajouter la date/heure du système au nom de fichier, ce qui empêchera tout écrasement, mais je voudrais savoir quand j'ai fait l'erreur.
Essayez ce qui suit:
import glob
import pandas as pd
# Give the filename you wish to save the file to
filename = 'Your_filename.csv'
# Use this function to search for any files which match your filename
files_present = glob.glob(filename)
# if no matching files, write to csv, if there are matching files, print statement
if not files_present:
pd.to_csv(filename)
else:
print 'WARNING: This file already exists!'
Je n'ai pas testé cela mais il a été levé et compilé à partir d'un code précédent que j'ai écrit. Cela arrêtera simplement les fichiers écrasant les autres. N.B. vous devrez modifier vous-même la variable de nom de fichier pour ensuite enregistrer le fichier, ou utiliser une variable datetime comme vous l'avez suggéré. J'espère que cela aide d'une certaine manière.
Sur la base de la suggestion de TaylorDay, j'ai fait quelques ajustements à la fonction. Avec le code suivant, il vous est demandé si vous souhaitez remplacer un fichier existant. Sinon, vous êtes autorisé à saisir un autre nom. Ensuite, la même fonction d'écriture est appelée, qui vérifiera à nouveau si le new_filename
existe.
from os import path
import pandas as pd
def write_csv_df(path, filename, df):
# Give the filename you wish to save the file to
pathfile = os.path.normpath(os.path.join(path,filename))
# Use this function to search for any files which match your filename
files_present = os.path.isfile(pathfile)
# if no matching files, write to csv, if there are matching files, print statement
if not files_present:
df.to_csv(pathfile, sep=';')
else:
overwrite = raw_input("WARNING: " + pathfile + " already exists! Do you want to overwrite <y/n>? \n ")
if overwrite == 'y':
df.to_csv(pathfile, sep=';')
Elif overwrite == 'n':
new_filename = raw_input("Type new filename: \n ")
write_csv_df(path,new_filename,df)
else:
print "Not a valid input. Data is NOT saved!\n"