Pythonでフォルダから複数のテキストファイルを読み取ってみます。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■フォルダ内に複数のテキストを用意する
Pythonでフォルダから複数のテキストファイルを読み取る前に、フォルダ内に複数のテキストを用意します。
今回は「C:\Users\user\test(フォルダパス)」内にtxt形式の複数のテキストファイルを置いてみました。
■フォルダから複数のテキストファイルを読み取る
フォルダ内に複数のテキストを用意することができましたので、フォルダから複数のテキストファイルを読み取るスクリプトを書いていきます。
■コード
import os path = r"C:\Users\user\test" os.chdir(path) def read_text_file(file_path): with open(file_path,'r',encoding="utf-8_sig") as f: print(f.read()) for file in os.listdir(): if file.endswith(".txt"): file_path = f"{path}\{file}" read_text_file(file_path)
インポートでosモジュールを呼び出します。osモジュールは、Pythonの標準ライブラリですので、事前にインストールする必要はありません。
呼び出した後に、pathという変数を作成し、その中に、今回用意した複数のテキストファイルが置かれている場所を指定し、格納します。
格納後、os.chdir()で複数のテキストファイルが置かれている場所を作業ディレクトリ(カレントディレクトリ)に変更します。
変更後、read_text_fileという関数を作成します。関数では、今回用意した複数のテキストファイルが置かれている場所にあるテキストファイルを開き、”r”(読み取り専用)モードで、読み取ります。この時に「UnicodeDecodeError: ‘cp932′ codec can’t decode byte 0x86 in position 11: illegal multibyte sequence」というエラーが発生する場合があります。
このような場合は、テキストファイルを開く際に「with open(file_path,’r’,encoding=”utf-8_sig”) as f」といったようにエンコーディングを設定すると、エラーが対処できます。
読み取りを行った後に、print関数でテキストファイルを出力します。
なお、関数を作成後、for文によるループ処理(繰り返し処理)で、今回用意した複数のテキストファイルが置かれている場所にあるテキストファイルを繰り返し開く処理を設定しておきます。
■コード
このスクリプトを「read_textfile.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、フォルダから複数のテキストファイルを読み取り出力させることができました。
コメント