2017-04-20 80 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'的任意目录结构。 –