2017-05-15 2 views
0

대용량 파일이 메모리에로드되지 않고 있는지 테스트하는 가장 효율적인 방법은 무엇입니까? 존재하지 않거나 읽을 수없는 경우 다운로드하십시오. 목표는 팬더 DataFrame에 데이터를 업로드하는 것입니다.대용량 파일이 존재하는지 테스트하는 가장 좋은 방법

작은 조각으로 테스트 한 스 니펫을 작성했습니다. 정확성과 pythonic 프로그래밍은 어떨까요?

url = "http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv" # 4.7kB 
file = "./test_file.csv" 

try: 
    df_data = pd.read_csv(file, index_col=0) 

except FileNotFoundError: 
    df_data = pd.read_csv(url, index_col=0) 
    df_data.to_csv(file) 
+0

-
들으 NROWS = 1'과 df.shape 또는 길이를 확인하여 단일 행을 읽습니다. – EdChum

+2

파일이 있는지 확인하려면 다음을 확인하십시오. http://stackoverflow.com/questions/82831/how-do-i-check-whether- a-file-exists-using-python을 사용하려면 df로 다운로드하고 읽을 때 os.path.isfile 검사를 넣고 df로로드 할 때 문제를 일으키는 잘못된 문자가있는 파일과 관련된 오류를 처리하십시오. – Satyadev

+2

'os.path' 다음에'os.path.isfile (fname)'은 파일이 존재하면 True를 반환합니다. – Nuageux

답변

-1

당신은 URL에서 파일이 존재하는지 확인하고로드 할 수 있습니다 .path.isfile (file)이 나에게 가장 좋은 해결책 인 것 같습니다. 거대한 파일을 다운로드하기 전에 확인하십시오 :

if not os.path.isfile(file): 
     urllib.urlretrieve(url, file) 
df_data = pd.read_csv(file, index_col=0) 

그것은 내 상황에서 (메모리에 업로드 한 후 디스크 에디터를 이용해 등) URL에서 메모리에 직접 업로드하는 것보다 느리지 만 안전합니다 ... 당신은`통과 할 수있는 모든

+0

시도 잡기는 가장 비약적인 방법을 가르치는 것이 좋습니다. – Satyadev

1

을 당신이 try을 사용하고 FileNotFoundError를 잡을 수 있다고 생각 : 그렇지 않은 경우

url = "http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv" # 4.7kB 
file = "./test_file.csv" 

try: 
    os.open(file, os.O_RDONLY) 
    df_data = pd.read_csv(file, index_col=0) 

except: 
    df_data = pd.read_csv(url, index_col=0) 
    df_data.to_csv(file) 
0

OS :

import os 
import pandas as pd 

url = "http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv" 
f = "./test.csv" 

if os.path.exists(f): 
    df = pd.read_csv(f) 
else: 
    df = pd.read_csv(url)