2017-04-20 197 views
2

我有一個目錄(有幾個子文件夾)的csv文件。在將csv文件上傳到數據庫(SQL服務器)之前,我想刪除所有csv文件的前兩行。我從位於一個文件夾(無子文件夾)的csv文件的一小部分子集開始使用以下python腳本,雖然腳本成功運行但沒有行從文件中刪除。我缺少什麼:使用python刪除前兩行的多個csv文件

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'的任意目錄結構。 –