[解決!Python]ファイルを作成/削除するには解決!Python

open関数とpathlib.Path.touch/write_textメソッドを使ってファイルを作成する方法と、os.remove関数とPath.unlinkメソッドを使ってファイルを削除する方法を紹介。

» 2022年07月05日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

# ファイルの作成
# open関数を使ったファイル作成
f = open('myfile0.txt', 'w'# ファイルを書き込みモードでオープンして
f.close()  # クローズする

# with文とopen関数を使ったファイル作成
with open('myfile1.txt', 'w') as f:
    pass

# 既に存在するファイルを上書きしたくなければ、mode引数に'x'を指定
f = open('myfile0.txt', 'x'# FileExistsError

# pathlib.Pathクラスのtouchメソッドを使ったファイル作成
from pathlib import Path

p0 = Path('myfile2.txt')
p0.touch()

# pathlib.Pathクラスのwrite_textメソッドを使ったファイル作成
p1 = Path('myfile3.txt')
p1.write_text(''# 0バイトを書き込むことでファイルを作成

# ファイルの削除
# os.remove関数を使ったファイル削除
import os

os.remove('myfile0.txt')
os.remove('myfile1.txt')

# pathlib.Pathクラスのunlinkメソッドを使ったファイル削除
p0.unlink()
p1.unlink()


ファイルの作成

 ちょっとしたテストを目的としてPythonコードからファイルを作成したいことはよくある。このようなときにはファイルの内容についてはどうでもよい。こうしたときにファイルを作成するには以下の方法が考えられる。

  • open関数でファイルを書き込み目的でオープンし、何も書き込まずにクローズする
  • pathlibモジュールのPathクラスが持つwrite_textメソッドやtouchメソッドを使ってファイルを作成する

 この2つについてそれぞれ見ていこう。

open関数を使った例

 open関数を使ってファイルを作成する例を以下に示す。

f = open('myfile0.txt', 'w'# ファイルを書き込みモードでオープンして
f.close()  # クローズする


 上のコードは何も書き込まずにファイルをクローズしているが、書き込みモードでファイルをオープンした時点でファイルが作成されるのでこれで十分なはずだ(pathlib.Path.touchメソッドの実装ではos.open関数を使って同様な処理を行っている)。

 Pythonではwith文を使って、ファイルのオープンとクローズが対として実行されるようにするのが一般的だ。そのため、上のコードは以下のように書く方がよいだろう。

with open('myfile1.txt', 'w') as f:
    pass


 既存のファイルを削除してしまうのを避けたいのであれば、open関数のmode引数に'x'(排他的に作成)を指定すればよい。

f = open('myfile0.txt', 'x'# FileExistsError


 このコードではmode引数に'x'を指定した上で「myfile0.txt」という名前のファイルを作成しようとしているが、上のコード例で既に作成しているのでFileExistsError例外が発生する。

pathlib.Pathクラスを使った例

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。