このチュートリアルでは、Pythonでのさまざまなファイル操作に取り組みます。Pythonを使用してファイルを読み取り、ファイルに書き込み、ファイルを削除する方法などについて説明します。それでは遅延せずに始めましょう。
Pythonでのファイル操作
前のチュートリアルでは、コンソールから入力を受け取る方法を使用しました。今回はファイルを使用して入力を受け取ります。つまり、ファイルから読み取り、ファイルに書き込むことになります。そのためには、いくつかのステップを守る必要があります。それらは次のとおりです。
- ファイルを開く
- そのファイルから入力を受け取る/そのファイルに出力を書き込む
- ファイルを閉じる
また、ファイルのコピーと削除といった便利な操作も学びます。
Pythonでのファイル操作の必要性
機械学習の問題で大規模なデータセットを扱う際には、ファイル操作は基本的な必要条件です。Pythonはデータサイエンスで主に使用される言語なので、Pythonが提供するさまざまなファイル操作に精通している必要があります。
そこで、Pythonのファイル操作のいくつかを探ってみましょう。
1. open()関数を使ってPythonでファイルを開く
Pythonでファイルを操作するための最初のステップは、ファイルを開く方法を学ぶことです。 open()
メソッドを使ってファイルを開くことができます。
Pythonのopen()関数は、2つの引数を受け入れます。最初の引数は、ファイル名と完全なパスです。2番目の引数は、ファイルのオープンモードです。
以下に、ファイルの読み取りモードとして一般的ないくつかのモードをリストしました:
- ‘r’ : このモードは、ファイルを読み取り専用で開くことを示します。
- ‘w’ : このモードは、ファイルを書き込み専用で開くことを示します。指定した名前のファイルが存在しない場合、新しいファイルが作成されます。
- ‘a’ : このモードは、そのプログラムの出力がそのファイルの前回の出力に追記されることを示します。
- ‘r+’ : このモードは、ファイルを読み書き両方で開くことを示します。
さらに、Windowsオペレーティングシステムでは、バイナリでファイルにアクセスするために ‘b’ を追加することができます。これは、Windowsがバイナリテキストファイルと通常のテキストファイルを区別するためです。
仮に、コードが配置されているディレクトリと同じディレクトリに ‘file.txt’ というテキストファイルがあるとします。このファイルを開きたいとします。
しかし、open(filename, mode)関数はファイルオブジェクトを返します。そのファイルオブジェクトを使用して、さらなる操作を行うことができます。
#ディレクトリ:/home/imtiaz/code.py
text_file = open('file.txt','r')
#フルパスを使用した別の方法
text_file2 = open('/home/imtiaz/file.txt','r')
print('First Method')
print(text_file)
print('Second Method')
print(text_file2)
以下のコードの出力は次のとおりです。
================== RESTART: /home/imtiaz/code.py ==================
First Method
Second Method
>>>
2. Pythonでファイルの読み書きを行う
Pythonでは、さまざまな方法でファイルの読み書きができますが、各関数の動作は異なります。重要なことはファイル操作のモードです。ファイルを読み込むには、読み込みモードまたは書き込みモードでファイルを開く必要があります。一方、Pythonでファイルに書き込むには、ファイルを書き込みモードで開く必要があります。
次に、Pythonでファイルの読み書きを行うためのいくつかの関数を紹介します。
- read():この関数はファイル全体を読み込み、文字列として返します。
- readline():この関数はファイルから行を読み込み、文字列として返します。n回目に呼び出された場合、n行目を取得します。
- readlines():この関数は、各要素がファイルの1行となるリストを返します。
- readlines():この関数は、各要素がファイルの1行となるリストを返します。
- write() : この関数は、固定の文字列をファイルに書き込みます。
- writelines() : この関数は、文字列のリストを書き込みます。
- append() : この関数は、ファイルに文字列を追加します。ファイルを上書きしません。
例として、ファイル “abc.txt” から個々の行を for ループ を使用して読み取りましょう:
# ファイルを開く
text_file = open('/Users/pankaj/abc.txt','r')
# 行のリストを取得する
line_list = text_file.readlines();
# リストから各行を表示する
for line in line_list:
print(line)
text_file.close() # ファイルを閉じるのを忘れずに
出力:
Python でファイルを読み取る方法を知ったので、ここから先は writelines() 関数を使用して書き込み操作を行います。
# ファイルを開く
text_file = open('/Users/pankaj/file.txt','w')
# 空のリストを初期化する
word_list= []
# 4 回繰り返す
for i in range (1, 5):
print("Please enter data: ")
line = input() # 入力を取得する
word_list.append(line) # リストに追加する
text_file.writelines(word_list) # ファイルに 4 つの単語を書き込む
text_file.close() # ファイルを閉じるのを忘れずに
出力
3. Pythonのshutil()メソッドを使用してファイルをコピーする
Pythonでは、shutilモジュールを使用してファイルをコピーすることができます。このユーティリティを使用すると、異なるファイルに対してPythonでコピーおよび移動操作を実行することができます。以下に例を示します:
import shutil
shutil.copy2('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copy2.txt')
#ファイルをコピーする別の方法
shutil.copyfile('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copyfile.txt')
print("File Copy Done")
4. Pythonのshutil.os.remove()メソッドを使用してファイルを削除する
Pythonのshutilモジュールには、ファイルシステムからファイルを削除するためのremove()メソッドがあります。Pythonで削除操作を実行する方法を見てみましょう。
import shutil
import os
#ファイルを削除する2つの方法
shutil.os.remove('/Users/pankaj/abc_copy2.txt')
os.remove('/Users/pankaj/abc_copy2.txt')
5. Pythonで開いたファイルをclose()メソッドで閉じる
Pythonでファイルを開く際には、変更を行った後にファイルを閉じることが非常に重要です。これにより、以前に行った変更が保存され、ファイルがメモリから削除され、プログラム内での読み取りや書き込みができなくなります。
Pythonで開いたファイルを閉じるための構文:
fileobject.close()
以前の例から続ける場合、ファイルを閉じる方法は次のようになります:
text_file = open('/Users/pankaj/abc.txt','r')
# ここにファイル操作を記述
text_file.close()
さらに、withブロックを使用すれば、ファイルを手動で閉じる必要はありません。withブロックが実行されると、ファイルは閉じられ、読み取りや書き込みができなくなります。
6. Python FileNotFoundError
Pythonでファイルを操作する際には、FileNotFoundErrorがよく発生します。これは、ファイルオブジェクトを作成する際に完全なファイルパスを指定することで簡単に回避できます。
File "/Users/pankaj/Desktop/string1.py", line 2, in <module>
text_file = open('/Users/pankaj/Desktop/abc.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: '/Users/pankaj/Desktop/abc.txt'
FileNotFoundErrorを修正するには、ファイルオープンメソッドに指定したパスが正しいことを確認するだけです。
結論
これらはPythonでのファイル操作です。Python内でファイルを使用する方法には、CSVデータの読み取りなどが含まれます。次の記事では、Pandasモジュールを使用してPythonでCSVデータセットを読み取る方法について説明しています。
I hope you enjoyed reading the article! Happy learning 🙂
**参考文献:
**https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files
Source:
https://www.digitalocean.com/community/tutorials/python-read-file-open-write-delete-copy