データを分析するとき、データフレームをcsvファイルに保存し、pd.to_csv()
を使用します。ただし、この関数は、同じ名前のファイルが存在するかどうかを確認せずに、新しいファイルを上書きします。 ファイルが既に存在するかどうかを確認する方法はありますか?存在する場合は、新しいファイル名を要求しますか?
システムの日時をファイル名に追加できることは知っていますが、これにより上書きが防止されますが、いつ間違えたかを知りたいです。
以下を試してください:
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!'
私はこれをテストしていませんが、私が書いた以前のコードから持ち上げてコンパイルしました。これは、ファイルが他のファイルを上書きするのを単に停止します。 N.B.ファイル名変数を自分で変更してファイルを保存するか、提案された日時変数を使用する必要があります。これが何らかの形で役立つことを願っています。
TaylorDayの提案に基づいて、関数を調整しました。次のコードでは、既存のファイルを上書きするかどうかを尋ねられます。そうでない場合は、別の名前を入力できます。次に、同じ書き込み関数が呼び出され、new_filename
が存在します。
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"