質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

402閲覧

カレントディレクトリが移動してしまう

Brot

総合スコア23

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/08/11 03:31

前提

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/08/11 03:45

カレントディレクトリは各プログラム (というかプロセス) が持ってるので、python プログラムの中で変更しても、コマンドプロンプトのカレントディレクトリは変更されません。
Brot

2022/08/11 04:42

すみません、説明不足でした。コマンドプロンプト上ではなく、IDLE上でカレントディレクトリを変更してPythonプログラムを実行しています。
guest

回答1

0

自己解決

pythonスクリプトを対象フォルダ内に入れて実行したら解決しました。

投稿2022/08/11 05:57

Brot

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問