2017-04-20 9 views
2

私はcsvファイルのディレクトリ(いくつかのサブフォルダを持つ)を持っています。私はデータベース(SQLサーバー)にcsvファイルをアップロードする前に、すべてのcsvファイルの最初の2行を削除したいと思います。私は1つのフォルダ(サブフォルダなし)にあるcsvファイルの小さなサブセットで次のpythonスクリプトを使い始めましたが、スクリプトは正常に実行されましたが、ファイルから行は削除されませんでした。何が私が行方不明です:複数のcsvファイルの最初の2行をPythonで削除します

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

私は1つのフォルダ(サブフォルダなし)と上のスクリプトでは正常に実行されますが、どの行も削除しない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'を使った任意のディレクトリ構造です。 –

関連する問題