Last Updated on 2025年7月28日
Pythonでファイル操作を行う際に頻繁に遭遇するエラーの1つが PermissionError: [Errno 13] Permission denied: 'file.txt' です。
このエラーは、プログラムがファイルやディレクトリにアクセスしようとしたとき、オペレーティングシステムによってアクセスが拒否されたことを示します。
この記事では、このエラーの意味、主な原因、そしてそれを解決するための具体的な方法を解説します。
目次
エラー内容
エラー全文は以下のような形式です:
|
1 |
PermissionError: [Errno 13] Permission denied: 'file.txt' |
このエラーは、主に以下のようなコードを書いたときに発生します。
|
1 2 3 4 |
with open('file.txt', 'w') as f: f.write("Hello, world!") |
原因
このエラーの主な原因は以下の通りです:
- 書き込み権限がないディレクトリにファイルを作成しようとしている
例:システムフォルダ(/etc, C:\Windows など) - ファイル自体にアクセス権限がない
ファイルが読み取り専用になっている、他のユーザーの所有ファイルであるなど - ファイルがすでに開かれており、ロックされている
特にWindowsでは他のアプリケーションがファイルを開いていると排他ロックがかかります - 管理者権限が必要な操作
一部の操作はスーパーユーザー(rootやAdministrator)でなければ行えません
対処法
原因に応じて、以下のような対処法があります。
1. ファイルパスと権限を確認する
|
1 2 3 4 5 6 7 |
# Linux/Mac ls -l file.txt # Windows(コマンドプロンプト) icacls file.txt |
2. 書き込み可能なディレクトリを使用する
例として、カレントディレクトリ(スクリプトと同じフォルダ)など、ユーザーが書き込み権限を持つ場所を使いましょう。
3. 管理者として実行する
- Linux/macOS:
sudo python script.py - Windows:Pythonやエディタを「管理者として実行」
4. ファイルが開いていないか確認する
対象ファイルを開いているアプリケーション(エクセル、メモ帳など)を閉じてから再度実行してください。
5. ファイルモードを確認する
|
1 2 3 4 5 |
# 読み取り専用のファイルに書き込みしようとしていないか確認 with open('file.txt', 'r') as f: # 'w' にしないよう注意 data = f.read() |
補足:WindowsとUnix系OSの違い
このエラーはOSによっても発生のしやすさが異なります。
- Windows:排他制御(ファイルロック)が強く、他のアプリが開いているとエラーになりやすい
- Linux/macOS:ファイルのパーミッション(chmod、chown)が原因でエラーになることが多い
以下は、Linux環境での書き込み権限を付与する例です:
|
1 2 3 |
chmod u+w file.txt |
まとめ
PermissionError: [Errno 13] Permission denied は、ファイルやディレクトリへのアクセス権限が原因で発生するエラーです。
特に以下のような対応が有効です:
- ファイルやディレクトリのパスが正しいかを確認
- ユーザーに書き込み権限がある場所を使う
- 必要に応じて管理者権限で実行する
- ファイルが他で開かれていないかをチェック
開発環境によっては権限の管理方法が異なるため、自分の環境に合わせて調整しましょう。


