前提
PythonでCSVファイルから見出しを削除するというものを本を見ながら作っています。
C:/Users/Documents/ch14/removeCsvHeaderという構成だとして、removeCsvHeaderの中にある複数のCSVファイルの見出しを削除したいのですが、ch14にあるCSVファイルの見出しが削除されてしまいます。
基本的なところの見落としがあるかもしれないのでご教示願いたいです。
実現したいこと
removeCsvHeaderの中にあるCSVファイルの見出しを削除したい
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:/Users/Documents/ch14/removeCsvHeader.py", line 18, in <module> csv_file_obj = open(csv_filename) FileNotFoundError: [Errno 2] No such file or directory: 'NAICS_data_1048.csv'
該当のソースコード
Python
1#! python3 2# removeCsvHeader.py - カレントディレクトリの全CSVファイルから見出しを削除する 3 4import csv, os 5 6os.makedirs('headerRemoved', exist_ok=True) 7 8# カレントディレクトリの全ファイルをループする 9for csv_filename in os.listdir('.'): 10 if not csv_filename.endswith('.csv'): 11 continue # CSVファイルでなければスキップ ❶ 12 13 print('見出し削除中 ' + csv_filename + '...') 14 15 # CSVファイルを読み込む(最初の行をスキップする) 16 csv_rows = [] 17 csv_file_obj = open(csv_filename) 18 reader_obj = csv.reader(csv_file_obj) 19 for row in reader_obj: 20 if reader_obj.line_num == 1: 21 continue # 最初の行をスキップする 22 csv_rows.append(row) 23 csv_file_obj.close() 24 25 # CSVファイルを書き出す 26 csv_file_obj = open(os.path.join('headerRemoved', csv_filename), 'w', 27 newline='') 28 csv_writer = csv.writer(csv_file_obj) 29 for row in csv_rows: 30 csv_writer.writerow(row) 31 csv_file_obj.close()
試したこと
os.chdir('removeCsvHeader')でカレントディレクトリを変更しても、removeCsvHeader.pyプログラムを実行した後、カレントディレクトリを確認するとchap.14になっている。
コードの9行目のfor csv_filename in os.listdir('.'):の部分を
for csv_filename in os.listdir('removeCsvHeader'):に書き換えたが、FileNotFoundError: [Errno 2] No such file or directory: 'NAICS_data_1048.csv'エラーが出る。
補足情報(FW/ツールのバージョンなど)
こちらに本のコードがあります
https://github.com/oreilly-japan/automatestuff-ja/blob/master/ch14/removeCsvHeader.py
回答1件
あなたの回答
tips
プレビュー