2016-11-02 13 views
2

Когда я анализирую данные, я сохраняю свои данные в csv-файле и использую для этого pd.to_csv(). Однако функция (над) записывает новый файл, не проверяя, существует ли одно с тем же именем. Есть ли способ проверить, существует ли файл, и если да, попросите новое имя файла?Pandas to_csv() проверка на перезапись

Я знаю, что я могу добавить дату и время системы в имя файла, что предотвратит перезаписи, но я хотел бы знать, когда я допустил ошибку.

+0

Отзывы о том, как я могу улучшить вопрос, приветствуются. Может ли избиратель объяснить его проголосовав, пожалуйста? Я с удовольствием сделаю некоторые коррективы. –

+0

Я не тот, кто вас низвонил, но я бы догадался, потому что ответ скорее всего возникнет из поиска Google? – Wboy

+0

К сожалению, этого не произошло, но я должен сказать, что искал встроенный Pandas или что-то в этом роде. Не думал про простой if-statement. –

ответ

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!' 

Я не проверял это, но он был отменен и составлен из какого-то предыдущего кода, который я написал. Это просто остановит файлы, перезаписывающие другие. Нотабене вам придется самостоятельно изменить имя файла, чтобы сохранить файл, или использовать некоторую переменную 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"