Как проверить, что путь - это существующий обычный файл, а не каталог? - PullRequest
1 голос
/ 24 августа 2010

Один скрипт используется для обмена информацией о файлах между командами. Используется как:

$ share.py -p /path/to/file.txt

Проверка аргумента гарантирует, что /path/to/file.txt существует и имеет правильные разрешения:

#[...]
# ensure that file exists and is readable
if not os.access(options.path, os.F_OK):
 raise MyError('the file does not exist')
# ensure that path is absolute
if not os.path.isabs(options.path):
 raise MyError('I need absolute path')
# ensure that file has read permissions for others
info = os.stat(options.path)
last_bit = oct(info.st_mode)[-1]
if not last_bit in ['4', '5', '6', '7']:
 raise MyError('others cannot read the file: change permission')

Проблема в том, что один пользователь отправил:

$ share.py -p / path / to /

и программа не завершилась так, как должна была. В ретроспективе я должен был увидеть это, но я этого не сделал.

Как добавить тест, чтобы убедиться, что путь является обычным файлом , который может иметь или не иметь расширение (я не могу просто обработать строку имени )?

Ответы [ 2 ]

9 голосов
/ 24 августа 2010
import os.path
os.path.isfile(filename)
4 голосов
/ 24 августа 2010
os.path.exists(path) and not os.path.isdir(path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...