Рубрики
Без рубрики

Как проверить, существует ли файл в Python

В этой статье мы исследуем несколько способов проверить, существует ли файл в Python. Tagged с помощью программирования, учебника, начинающих, python.

Как сделать Python (серия 14 деталей)

Как человек, который буквально только что узнал о канонических URL-адресах и перекрестном сообщении, я решил, что попробую Dev.ta с одной из моих более популярных статей. Я надеюсь, вам понравится!

Проблема введение

Недавно я собирался прочитать некоторые данные из файла конфигурации, но я хотел, чтобы код был обратный совместимый. Другими словами, если файл конфигурации не существует, я хотел бы предположить исходные предустановленные значения. В противном случае я бы вытащил данные из файла конфигурации.

К счастью, я провел свое исследование и придумал решение. План состоял в том, чтобы проверить, существовал ли файл конфигурации. Если это так, программа будет читать из нее и заполнить необходимые поля. В противном случае программа будет опираться на некоторые произвольные предустановленные значения.

Для этого мне пришлось найти способ проверить существование файла. Оказывается, в Python есть много способов сделать это.

Решения

Если мы надеемся проверить, существует ли файл, есть несколько решений:

  • Проверьте, существует ли файл с Попробуйте/кроме Блок (Python 2+)
  • Проверьте, существует ли файл с помощью OS.Path (Python 2+)
  • Проверьте, существует ли файл с помощью Путь объект (Python 3.4+)

Конечно, мы должны определить, какое решение лучше для нас!

Проверьте, существует ли файл с блоком TRY

Сначала в списке-блок попытки. В этом сценарии мы попытались открыть наш файл в блоке Try. Если файл не открывается, мы запускаем предустановленные значения. Например:

try:
    fh = open('/path/to/file', 'r')
    # Store configuration file values
except FileNotFoundError:
    # Keep preset values

Это решение, пожалуй, самое простое и самые надежные, но Filenotfounderror это обновление от Python 3. У вас будет больше проблем с поймом Ioerror в Python 2.

Проверьте, существует ли файл с путем ОС

Другой вариант – вообще пропустить обработку ошибок и непосредственно убедиться, что путь существует. Например:

import os
exists = os.path.isfile('/path/to/file')
if exists:
    # Store configuration file values
else:
    # Keep presets

Конечно, недостаток здесь – состояние гонки от строки 2 до строки 3. Если по какой -то причине файл конфигурации удаляется между строкой 2 и строкой 3, то скрипт будет сбоем. Если это не риск в вашем приложении, то это решение отличное.

Проверьте, существует ли файл с объектом пути

Если вы одержимы объектно-ориентированным программированием, как я, то, возможно, это решение для вас. Начиная с Python 3.4, мы можем обернуть нашу ссылку на файл в объект, который приводит к множеству новых функций. Например:

from pathlib import Path
config = Path('/path/to/file')
if config.is_file():
    # Store configuration file values
else:
    # Keep presets

Кроме того, это новое представление объекта позволяет нам использовать наш первоначальный блок Try-Except:

try:
    absolute_path = config.resolve()
    # Store configuration file values
except FileNotFoundError:
    # Keep presets

Конечно, вам может не понадобиться вся эта функциональность. В конце концов, если чтение содержимого является целью, то первый вариант, вероятно, является лучшим.

Немного резюме

Используя приведенные выше методы, у нас есть несколько вариантов, чтобы проверить, существует ли файл в Python:

# Brute force with a try-except block
try: 
    fh = open('/path/to/file', 'r') 
except FileNotFoundError: 
    pass

# Leverage the OS package
import os 
exists = os.path.isfile('/path/to/file')

# Wrap the path in an object for enhanced functionality
from pathlib import Path
config = Path('/path/to/file') 
if config.is_file(): 
    pass

Для целей этого урока нас интересовали только файлы. Однако эти решения могут быть адаптированы к Проверьте существование каталогов и символических ссылок , так что не бойтесь поиграть. Это красота Python!

Во всяком случае, спасибо за то, что нашли время, чтобы проверить эту статью. Если это ваш первый раз, и вы нашли эту статью полезной, почему бы и нет подписаться на кодировщик Renegade ? Подписка бесплатна, и вы всегда будете в курсе последнего контента.

Увидимся в следующий раз!

Как сделать Python (серия 14 деталей)

Оригинал: “https://dev.to/renegadecoder94/how-to-check-if-a-file-exists-in-python-11om”