IOError: [Errno 13] Python で許可が拒否されました
-
Python でのファイル処理の
IOError: [Errno 13] Permission denied
とは -
Python で
IOError: [Errno 13] Permission denied
を修正する方法 -
chmod
コマンドを使用して Python でファイルのアクセス許可を変更する方法
私たち人間は主にコンピュータの GUI と対話するため、IOError
が発生するのはよくあることです。 フォルダー、ファイル、圧縮ファイル、またはアプリケーションの違いをビジュアルから理解しています。
私たちはフォルダー、ファイル、圧縮ファイル、またはアプリケーションと頻繁にやり取りしてきたため、脳がこれらを区別する処理を行っていないことがあります。
しかしその一方で、ビジュアルだけを理解していないコンピューターにすべてを供給しなければなりません。 むしろ、完全な詳細を提供する必要があります。
Python でのファイル処理のIOError: [Errno 13] Permission denied
とは
ファイル処理では、アクセスするファイルの完全なパスを提供する必要があります。 そうしないと、IOError
が発生します。 ファイルを開きたいが、代わりにフォルダーのパスを提供した場合、IOError: [Errno 13] Permission denied
というメッセージが表示されます。
以下は、Python でのエラーのコード例です。
# opening file
f = open("E:\Projects\Test_folder", "r")
出力:
PermissionError: [Errno 13] Permission denied: 'E:\\Projects\\Test_folder'
上記の例では、Test_folder
を読み取りモードで開こうとしていますが、これにより PermissionError: [Errno 13] Permission denied
がスローされました。
Python で IOError: [Errno 13] Permission denied
を修正する方法
これを修正するには、フォルダーではなく、アクセスするファイルへの正しいパスを入力する必要があります。 Test_folder
に 2つのファイルがあるとします。
import os
# Folder Path
folder_path = "E:\Client Project Report\Test_folder"
# display all files in a folder
print(f"All files in the Test_folder are\n{os.listdir(folder_path)}")
# file path
file_path = "E:\Client Project Report\Test_folder\Test_file_1.txt"
# read file
f = open(file_path, "r")
print(f"\n{f.read()}")
# file closed
f.close()
出力:
All files in the Test_folder are
['Test_file_1.txt', 'Test_file_2.txt']
Hi There!
This is test file 1
ファイルのパスを指定すると、エラーが解決されます。 また、Python で開いているファイルを閉じることをお勧めします。これにより、そのファイルが再度開かれるまで、誰もそのファイルを読み書きできなくなります。閉じたファイルを読み書きしようとすると、 値エラー
.
ただし、ファイルの参照オブジェクトが別のファイルに割り当てられると、Python はファイルを自動的に閉じます。 それでも、close()
関数を使用してファイルを閉じることをお勧めします。
さらに、try-catch
ブロックのような例外処理メカニズムを使用して、そのようなエラーをキャッチし、プログラムがクラッシュしないようにすることもできます。
chmod
コマンドを使用して Python でファイルのアクセス許可を変更する方法
説明したように、許可されていないファイルを開こうとすると、IOError: [Errno 13] Permission denied
が発生します。
アクセスが許可されていないフォルダーを開きたいとしますが、そのフォルダーを開くスクリプトを Python で記述しようとすると、フォルダーへのアクセス許可が拒否され、Python コンパイラーがエラーをスローします。 .
このエラーを解決するには、モードの変更 を表す chmod
コマンドを使用できます。 chmod()
には、アクセスするファイル/フォルダーのパスとファイル モードの 2つの引数が必要です。
chmod
コマンドは、ファイルのファイル許可を変更するために使用され、特定のファイルの許可フラグを変更することによって行われます。
パーミッション フラグは、ファイル所有者、ファイル グループ、および他のすべてのユーザーの読み取り、書き込み、および実行パーミッションを指定するために使用される 3 桁の 8 進値で表されます。
chmod
の構文:
chmod(path, mode)
このコマンドは、次の 2つの引数を取ります。
- 1つ目は、権限を変更するファイルへのパスです。
- 2つ目は、設定する権限です。
filename
という名前のファイルに対して、全員に読み取りと書き込みの許可を与えたいとしましょう。 次のコマンドを使用します。
chmod 777 filename
上記のコマンドの Python スクリプトは次のようになります。
import os
os.chmod("my_file", 0o777)
このコードは、次のように表すこともできます。
import os
import stat
path = "E:\Project\file1.txt"
# stat.S_IRWXU --> All permissions (Read, write, and execute) to the owner
# stat.S_IRWXG --> All permissions (Read, write, and execute) to group
# stat.S_IRWXO --> All permissions (Read, write, and execute) to others
print(os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO))
これにより、特定のファイルの読み取り、書き込み、および実行のアクセス許可が全員に付与されます。
chmod
で 3つの 8 進数が表すもの
ファイルのアクセス許可は、8 進数を使用して表すことができます。 8 進数は 3 桁で構成され、それぞれが異なる許可を表します。
- 最初の桁は所有者の許可を表します。
- 2 桁目は、グループの権限を表します。
- 3 桁目は、他のユーザーの権限を表します。
ファイルのパーミッションは、希望するパーミッションを表す 8 進数で chmod
コマンドを使用して変更できます。
たとえば、ファイルの所有者に読み取り、書き込み、実行のパーミッションを与え、グループと他のユーザーには読み取りと実行のパーミッションのみを与えるには、8 進数 755
を使用できます。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません