MENU
Python

【Python】ファイルが読み取り専用か確認する

python3.7を使用

パーフォースなどバージョン管理ソフトを使っているとチェックアウトし忘れで読み取り専用にチェックが入っていたりなど、読み取り専用がどうかの確認をしたいケースは多いと思います。よく使うけど忘れがちなので残しておこうと思いました。

確認方法

例では読み取り専用のチェックが入っている check_ON.txt と
入っていない check_OFF.txt を用意

import os

readonly_on = 'D:/python/check_ON.txt'
readonly_off = 'D:/python/check_OFF.txt'

r_on = os.access(readonly_on, os.W_OK)
r_off = os.access(readonly_off, os.W_OK)

print(r_on)
# False

print(r_off)
# True

読み取り専用のチェックが入っていると False(書き込みできない)と返ってきます。
チェックが入っていないと True(書き込み出来る)と返ってきます。

if文を使って処理を分岐

test.txtを新たに作って確認します。

import os

test_file = 'D:/python/test.txt'

r = os.access(test_file, os.W_OK)

if r == True:
    print('書き込み出来ます')

elif r == False:
    print('読み取り専用ONになっているため処理しない')

新規作成ファイルだと読み取り専用にチェックは入っていないため「書き込み出来ます」が返ってきます。

読み取り専用にチェックを入れてから実行


読み取り専用にチェックを入れてから実行すると「読み取り専用ONになっているため処理しない」と返ってきます。

if notを使った確認方法もあるようですが、if notは少し考え方が難しいので今回はこの方法をとっています。