[ホーム] - [よく見るエラーメッセージ一覧] - ["PermissionError: [Errno 13] Permission denied"の原因と対処]

【Python】"PermissionError: [Errno 13] Permission denied"の原因と対処 | テキストファイルを読み込むサンプル





作成日:2022/03/06


Windows 11環境において Python3.x 上で read によりファイルを読み込もうとした場合、次のエラーで失敗する場合があります。


PermissionError: [Errno 13] Permission denied: 'c:\\temp\\test.txt'



様々な原因が考えらると思います。
一つの原因は、openしようとしたファイルが他のプロセスに排他的にロックされていた場合です。
Windowsでは書き込みロックではなく、読み取りのロックを行うことも可能です。openしようとしたファイルが読み取りロックされていないか確認してください。

参考:

テキストファイルを読み取り排他で開く




【間違い】

f = open('c:\\temp\\test.txt', 'r', encoding='UTF-8')

#ファイルを全て読み込む
buf = f.read()

#すべて書き出す
print(buf)

f.close()

Traceback (most recent call last):
File "c:\temp\test.py", line 2, in f = open('c:\\temp\\test.txt', 'r', encoding='UTF-8')
PermissionError: [Errno 13] Permission denied: 'c:\\temp\\test.txt'

サンプルコード

以下は Windows 10 環境における正常実行可能なサンプルコードです。

テキストファイルを一括でバッファに読み込み、一気に出力するサンプルプログラムです。
サンプルコード:

f = open('c:\\temp\\test.txt', 'r', encoding='UTF-8')

#ファイルを全て読み込む
buf = f.read()

#すべて書き出す
print(buf)

f.close()


実行結果:

テキストファイルの1行目
テキストファイルの2行目
テキストファイルの3行目




ファイルを一括して読み込み、1行ごとに処理するサンプルです。
サンプルコード:

f = open('c:\\temp\\test.txt', 'r' , encoding='UTF-8')

#ファイルを全て読み込む
buf = f.readlines()

#1行ごと書き出す
for linedata in buf:
print(linedata)

f.close()

実行結果:

テキストファイルの1行目

テキストファイルの2行目

テキストファイルの3行目




ファイルを1行ごと読み込み出力するサンプルコードです。
サンプルコード:

f = open('c:\\temp\\test.txt', 'r' , encoding='UTF-8')

while True:

#1行ごと読み出す
linedata = f.readline()
if linedata == '':
break
print (linedata)

f.close()

実行結果:

テキストファイルの1行目

テキストファイルの2行目

テキストファイルの3行目








本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [よく見るエラーメッセージ一覧]