Проверка существует ли файл в папке на языке Python
1. os.path.isfile(path)
Эта функция возвращает true, если данный путь является существующим обычным файлом. Из этого следует, что символические связи (symbolic links) в видеos.path.islink(path)
тоже будут true пока os.path.isfile(path)
также будет true. Это удобная функция, что
бы проверить существует ли файл. К
сожалению эта функция только проверяет
наличие файла, но не гарантирует имеет
ли пользователь доступ к этому файлу.
Она говорит вам, что файл существует
точно в момент вызова функции. Вполне
возможно (хотя не хотелось бы), что во
время между тем как вызвал функцию и
открываешь файл, его кто-то удалил и
перенес/переименовал.Например, здесь показан такой случай неудачного открытия файла:
1 2 3 4 5 6 |
>>> os.path.isfile('foo.txt')
True
>> f = open('foo.txt', 'r')
Traceback (most recent call last):
File "", line 1, in
IOError: [Errno 13] Permission denied: 'foo.txt'
|
2. os.access(path, mode)
Эта функция проверяет имеет ли текущий пользователь (с реальным uid/gid) доступ (привилегии на чтение и/или запись) к объекту с данным путем. Чтобы проверить этот файл доступен на чтение используют режимos.R_OK
, а на запись
используют режим os.W_OK
.
Например.
1 2 3 4 5 6 7 |
>>> # Check for read access to foo.txt
>>> os.access('foo.txt', os.R_OK)
True # This means the file exists AND you can read it.
>>>
>>> # Check for write access to foo.txt
>>> os.access('foo.txt', os.W_OK)
False # You cannot write to the file. It may or may not
exist.
|
1 2 3 4 5 6 7 8 |
>>> # The file 'foo.txt' currently exists and is
readable.
>>> if os.access('foo.txt', os.R_OK):
>>> # After executing os.access() and before
open(),
>>> # another program deletes the file.
>>> f = open('foo.txt', 'r')
Traceback (most recent call last):
File "", line 1, in
IOError: [Errno 2] No such file or directory: 'foo.txt'
|
3. Доступ к файлу (открытие файла).
Попытавшись открыть файл, вы не только убедитесь, что файл существует но и доступен для вас.
1 2 3 4 5 |
try:
f = open('foo.txt')
f.close()
except IOError as e:
print('Упс!')
|
1 2 3 4 5 6 7 8 9 |
def file_accessible(filepath, mode):
''' Проверка существует ли файл и
доступен ли. '''
try:
f = open(filepath, mode)
f.close()
except IOError as e:
return False
return True
|
1 2 3 4 5 6 7 |
>>> # Say the file 'foo.txt' exists and is readable,
>>> # whereas the file 'bar.txt' doesn't exist.
>>> foo_accessible = file_accessible('foo.txt', 'r')
True
>>>
>>> bar_accessible = file_accessible('bar.txt', 'r')
False
|
Комментариев нет:
Отправить комментарий