2016-11-02 5 views
2

데이터를 분석 할 때 데이터 프레임을 CSV 파일에 저장하고 pd.to_csv()을 사용합니다. 그러나 함수 (over)는 같은 이름의 파일이 있는지 여부를 확인하지 않고 새 파일을 씁니다. 파일이 이미 존재하는지 확인하는 방법이 있습니까? 그렇다면 새로운 파일 이름을 물어보십시오.Pandas to_csv() 덮어 쓰기 확인

나는 파일 이름에 시스템의 datetime을 추가 할 수 있다는 것을 알고있어 덮어 쓰기를 막을 수는 있지만 실수를했을 때 알고 싶습니다.

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

나는이 테스트를하지 않은 있지만 해제 내가 쓴 일부 이전 코드에서 컴파일되었습니다

+0

질문을 개선 할 수있는 방법에 대한 의견을 환영합니다. 유권자가 자신의 하향 투표를 설명해 주시겠습니까? 기꺼이 약간 조정 해 드리겠습니다. –

+0

나는 당신을 downvoted 사람이 아니지만, 그 대답은 Google 검색에서 올 가능성이 있기 때문에 나는 그것을 추측하겠습니까? – Wboy

+0

불행하게도 그것은하지 않았다. 그러나 나는 내가 Pandas 붙박이 또는 무엇인가 검색하고 있었다라고 말해야한다. 간단한 if 문에 대해 생각하지 않았습니다. –

답변

2

은 다음보십시오. 이렇게하면 다른 사람이 파일을 덮어 쓰지 않게됩니다. N.B. 파일 이름 변수를 직접 변경하여 파일을 저장하거나 제안 된대로 날짜/시간 변수를 사용해야합니다. 나는 이것이 어떤면에서 도움이되기를 바랍니다.

+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"