2017-04-20 1 views
2

나는 여러 하위 폴더가있는 csv 파일의 디렉토리가 있습니다. 나는 csv 파일을 데이터베이스 (SQL 서버)에 업로드하기 전에 모든 csv 파일의 처음 2 행을 삭제하려고합니다. 한 폴더 (하위 폴더 없음)에있는 csv 파일의 작은 하위 집합에서 다음 Python 스크립트로 시작했지만 스크립트가 성공적으로 실행되었지만 파일에서 행이 삭제되지는 않았습니다. 나는 무엇 누락 이니파이썬으로 여러 csv 파일의 첫 번째 2 행을 삭제하십시오.

import glob 
import csv 

myfiles = glob.glob("C:\Data\*.csv") 
for file in myfiles: 
    lines = open(file).readlines() 
    open(file, 'w').writelines(lines[1:]) 

여기 내 샘플 데이터입니다 :

"Title: Distribution of Nonelderly Population by Household Employment Status | The Henry J. Kaiser Family Foundation" 
"Timeframe: 2015" 
"Location","At Least 1 Full Time Worker","Part Time Workers","Non Workers","Total" 
"United States","0.82","0.08","0.10","1.00" 
"Alabama","0.79","0.06","0.15","1.00" 
"Alaska","0.85","0.06","0.09","1.00" 
"Arizona","0.80","0.08","0.12","1.00" 
"Arkansas","0.78","0.07","0.15","1.00" 
"California","0.81","0.08","0.10","1.00" 

내가 편집 출력 CSV 파일과 같은 디렉토리 구조를 유지하고 싶다. 도움이 될 것입니다.

+0

그럼, 무엇이 문제입니까? 어떤 문제에 빠졌습니까? – pvg

+0

한 폴더 (하위 폴더 없음)와 위의 스크립트에서 성공적으로 실행되었지만 어떤 행도 삭제하지는 않지만 csv 파일의 작은 하위 집합을 시도했습니다. – user7717771

+1

쓰기 모드로 열기 전에 파일을 닫지 마십시오. –

답변

0

이 시도 :

import os 

# Change this to your CSV file base directory 
base_directory = 'C:\\Data'  
for dir_path, dir_name_list, file_name_list in os.walk(base_directory): 
    for file_name in file_name_list: 
     # If this is not a CSV file 
     if not file_name.endswith('.csv'): 
      # Skip it 
      continue 
     file_path = os.path.join(dir_path, file_name) 
     with open(file_path, 'r') as ifile: 
      line_list = ifile.readlines() 
     with open(file_path, 'w') as ofile: 
      ofile.writelines(line_list[2:]) 

참고 : 변수 이름으로 파일을 사용하지 마십시오 또는 내장 클래스를 소지품 것입니다.

+0

위에 행운이 없습니다 – user7717771

+0

핸들에 대한 응답이 업데이트되었습니다 'os.walk'을 사용하는 임의의 디렉토리 구조. –