2016-11-02 5 views
2

私はデータを解析しているときに、データフレームをCSVファイルに保存し、そのためにpd.to_csv()を使用します。ただし、関数(over)は、同じ名前のファイルが存在するかどうかをチェックすることなく、新しいファイルを書き込みます。 ファイルがすでに存在するかどうかを確認する方法はありますか?存在する場合は、新しいファイル名を尋ねますか?上書きを確認するパンダto_csv()

は、私がどの上書きを防ぐことができますファイル名にシステムの日時を追加することができます知っているが、私はミスを犯したときに知っていただきたいと思います。

+0

質問を改善する方法についてのご意見は歓迎します。有権者が下院議決権行使を説明してもらえますか?私は喜んで調整をいくつか行います。 –

+0

私はあなたを落とした人ではありませんが、その答えはGoogleの検索から来る可能性が高いからです。 – Wboy

+0

残念ながら、それはしませんでしたが、私はパンダの内蔵または何かを探していたと言わなければなりません。単純なif文については考えていませんでした。 –

答えて

2

次のことを試してみてください。

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.ファイル名変数を自分で変更してファイルを保存するか、提案したようにdatetime変数を使用する必要があります。これが何らかの形で役立つことを願っています。

+0

ありがとうございました。それはかなり簡単な解決策です:) –

0

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" 
関連する問題