ファイルを扱うことは、プログラマーにとって初歩的かつ基本的なスキルです。
ファイルは、アプリケーションのデータ、ユーザー設定、動画、画像などを保存するために非常によく使用されます。
ソフトウェアアプリケーションにおけるファイルの使用例は数え切れないほどあるので、ファイルを操作するタスクに深く精通することが賢明でしょう。
ファイルを作成したり、削除したり、移動したり。
この記事では、プログラミング言語Pythonを使用して、ファイルを操作するプロセスを説明します。
Pythonが提供する組み込みメソッドにより、比較的少量のコードで簡単にファイルを操作することができます。
プログラミングでは何でもそうですが、ファイルに関しても同じ目標を達成する方法はたくさんあります。
しかし、この記事では基本に忠実に、これらのアクションを実行する最も一般的な方法を紹介します。
Pythonでファイルを作成する
ファイルを開くモード
Pythonでファイルを開くには、いくつかのモードがあります。
どのモードを選ぶかは、そのファイルをどのように使うか、あるいはどのようなデータをファイルから(ファイルへ)読み(書き)出すかによって決まります。
このモードは、組み込みの open()
メソッドでファイルを開くときに指定します。
次のセクションで詳しく説明します。
ファイルモードの可能な組み合わせをいくつか見てみましょう。
-
w
: ファイルを書き込むためにオープンし、ファイルがまだ存在しない場合は新しいファイルを作成します。ファイルが存在する場合は上書きされます。 -
w+
: ファイルを書き込み用に開くが、読み込みも行い、ファイルが存在しない場合は作成する。ファイルがすでに存在している場合は、上書きする。 -
r
: ファイルを読み込み専用にオープンする。 -
rb
: バイナリ形式のファイルを読み込むためにオープンする。 -
wb
: バイナリ形式でファイルを書き込むためにオープンする。 -
wb+
: バイナリ形式で書き込みと読み出しを行うファイルを開きます。 -
a
: ファイルの末尾に追加するためのファイルを開きます。 -
+
: 一般に、この文字はr
,w
,a
と並んで使用され、書き込みと読み出しの両方を意味する。
ファイルモードが指定されていない場合、デフォルトで r
が指定されたものとみなされる。
モードを選択する際には、どのようなユースケースがあるのか、また、そのファイルを開いている間、どのような用途に使われるのかを十分に考慮してください。
オープン()
Pythonのあらゆるものと同様に、多くのファイル関連のタスクの実行は非常にシンプルです。
例えば、Pythonでファイルを作成することは、1行のコードで行うことができます。
myFile = open("new.txt", "w+")
上の例では、”new.txt “というファイルを読み書きのためにオープンしています。
この例では、ファイルはまだ存在しないので、自動的に作成されます。
open()`メソッドは、多くの引数を受け付けますが、ほとんどの場合、以下の2つだけを使用します。
- filename – オープン/作成したいファイルの名前を指定するための必須フィールドです。この例では、”new.txt “です。
- mode – ファイルを開くモードを指定するオプションの引数、この例では “w+”。
第2引数は省略可能で、その場合、Pythonは r
と見なします。
ここに記載されていない他の引数では、バッファリング、エンコーディング、改行処理などを設定することができます。
これらの引数の詳細については、 open
メソッドに関するPythonの公式ドキュメントを参照してください。
close()
ファイルを開くときには、必ずそれを閉じるようにする必要があります。
これはファイルオブジェクトの close()
メソッドを使うか、Python が提供する with
キーワードを使ってファイルを開き、スコープ外に出たときに自動的に閉じるようにすることができます。
ファイルを閉じた後は、再びファイルを開かない限り、コードの中で読み書きをすることはできません。
ファイルを開いたままにしておくと、システムリソースを消費してプログラムの速度が落ちますし、場合によっては他のコードからファイルが使われるのを防いでしまいます。
Pythonのガベージコレクションは、ファイルが使われなくなったときに自動的に閉じるように最善を尽くしますが、それに依存してはいけません。
ファイルが既に閉じられている場合、そのファイルに対して再び close()
を呼び出しても、全く影響を与えません。
myFile.close()
myFile.close() # Doesn't affect the file
Pythonでファイルを移動する
Python でファイルを移動するには、Python でファイルのコピー、移動、削除を行う機能を提供する os
と shutil
モジュールをインポートする必要があります。
これらのモジュールはどちらもファイルの移動のためのメソッドを提供していますが、多くの場合 shutil
モジュールの方がより便利なメソッドを持っています。
import os
import shutil
# Move a file by renaming it's path
os.rename('/Users/billy/d1/xfile.txt', '/Users/billy/d2/xfile.txt')
# Move a file from the directory d1 to d2
shutil.move('/Users/billy/d1/xfile.txt', '/Users/billy/d2/xfile.txt')
この例を動作させるためには、コピー先のディレクトリが存在する必要があることに注意してください。
d1 “と “d2 “というディレクトリを設定したら(あるいは、あなたのディレクトリ構造に合わせてこの例を変更したら)、このコードを実行してください。
d2 “ディレクトリをチェックアウトすると、そのディレクトリにxfile.txtが存在することが確認できるはずです。
とても簡単でしょう?
Pythonでファイルを削除する
おそらく想像がつくと思いますが、Pythonでファイルを削除するには、os
モジュールの remove()
メソッドを使うと非常に簡単です。
以下の例では、”xfile.txt “を削除します。
必要なことは、削除したいファイルのパスを指定して remove()
メソッドを呼び出すだけです。
import os
# Delete xfile.txt
os.remove('/Users/billy/d2/xfile.txt')
d2 “ディレクトリをもう一度チェックアウトすると、xfile.txtは削除されています。
簡単ですね。
結論
今回は、Python の組み込み関数である open()
, shutil.move()
, os.remove()
を使って、ファイルを作成、移動、削除するごく簡単な例を示しました。
また、Pythonのファイルモードについて簡単な紹介と説明を行いました。