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

Самый питонический способ проверить, существует ли файл в Python

https://youtu.be/mmbkrg4lk5o Метод OS.Path.Pexists (‘file.txt’) возвращает true, если существует файл ‘file.txt’, и false иначе. Чтобы использовать его, сначала импортируйте модуль ОС с помощью Import OS. Если вы хотите проверить, существует ли файл на данном пути, используйте стандартную запись на пути записи «/file/at/Path/file.txt» в качестве префикса. Import OS # Проверка для существующего файла: Печать (OS.Path.exists (‘main.py’)) … Самый питонический способ проверить, существует ли файл в Python Подробнее »

Автор оригинала: Chris.

Метод OS.Path.exists ('file.txt') Возвращает Правда Если файл 'file.txt' существует, а Ложь иначе. Чтобы использовать его, импортируйте ОС Сначала модуль с Импорт ОС Отказ Если вы хотите проверить, существует ли файл на данном пути, используйте стандартную запись на пути '/file/at/path/file.txt' как префикс.

import os

# Check for existing file:
print(os.path.exists('main.py'))
# True

# Check for non-existing file:
print(os.path.exists('folder/nonexistent.py'))
# False

Интернет полна гидов, которые показывают вам «Наиболее распространенные способы проверить, существует ли файл в Python» (Примеры: Здесь , Здесь и здесь ). Но при чтении над ними я обнаружил, что трудно извлечь точный метод – они слишком долго, а содержание пушистый и длительный.

Если вы похожи на меня, вы просто хотите знать лучший и самый пифитонный способ проверить, существует ли файл, верно?

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

Проблема : Учитывая имя файла и путь Информация. Проверьте, существует ли файл с именем файла на указанном пути или нет. Возвращаемое значение должно быть логическим значением ( True , если файл существует, и false в противном случае).

Пример : Скажем, у вас есть следующие имена файлов AS Строки, включая информацию о пути (как префикс строки).

filename_1 = 'file-that-exists.txt'
# Method returns True

filename_2 = 'my/directory/non-existing-file.txt' 
# Method returns False

Вы хотите метод, который возвращает Правда Для первого имени файла (файл, который существует) и Ложь Для второго файла (файл, который не существует).

Решение : Без дальнейшего ADO давайте посмотрим на самый пифитонический способ проверить, в вашем скрипте, если файл существует.

>>> import os
>>> os.path.exists('file-that-exists.txt')
True
>>> os.path.exists('my/directory/non-existing-file.txt')
False

Вы можете попробовать себя в нашем интерактивном коде Shell:

Упражнение : Запустите код. Какой вывод? Создайте несуществующий файл, чтобы второй вызов метода возвращает true!

Экскурсия на питон

Теперь вы знаете, как проверить, существует ли файл (и какой самый питонический способ сделать это). Но есть предостережение! Вы на самом деле не должны этого делать.

Причина в том, что вы, вероятно, используете механизм проверки существования файлов, чтобы сделать что-то вдоль этих линий (только псевдокод):

# PSEUDOCODE:
if file_exists():
    open_file()

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

Другими словами: этот метод не безопасен. Несколько потоков могут получить доступ к одному и тому же файлу, что может привести к странным поведению.

Например, ваша программа может обнаружить, что файл существует. Затем другой нить может удалить файл, поэтому его больше не существует. Затем ваша программа выполняет вторую строку Open_File () Работа над несуществующим файлом!

Чтобы решить эту проблему, вы должны просто открыть файл прямо сейчас и приложить его в блок TRY/кроме. Если файл не существует, Python бросает исключение, которое вы ловите в своем приложении.

try:
    f = open('file.txt')
    # Do something with file
    f.close()
except FileNotFoundError:
    print('File does not exist')

Это гораздо лучше – если вы хотите избежать любого вывода, если файл не существует, просто ничего не сделайте в операторе кроме:

try:
    f = open('nonexistent_file.py')
    print(f)
    f.close()
except FileNotFoundError:
    None

Я надеюсь, вам понравилось небольшое учебное пособие. Если вы хотите постоянно улучшить свои навыки Python (и бесплатно), проверьте мою учетную запись электронной почты Академии науки (включая бесплатные чит-листы)!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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