Как проверить, находится ли файл в каталоге - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно проверить, существует ли файл с указанным c именем в каталоге в python.

МОЙ КАТАЛОГ:

D:\mydirectory\img\

Я использую python -депо, чтобы пройти путь моего каталога в '.venv'

os.path.exists(config('PATH_IMG'))

Мне нужен способ проверить, находится ли файл 'photo.jpg' в 'PATH_IMG'.

Я пытался использовать os lib, но в официальной документации не указан способ сделать это.

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

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 02 апреля 2020

Вы можете использовать функцию os.listdir, она возвращает список файлов в каталоге, поэтому:

if "photo.jpg" in os.listdir(directory):
  return True

Также есть функция:

os.path.exists(directory + "/" + "photo.jpg")

, которая напрямую возвращается, если файл существует

0 голосов
/ 02 апреля 2020

Создайте путь к файлу и используйте os.path.isfile, чтобы проверить наличие файла.

imagefile = os.path.join(config('PATH_IMG'), 'photo.jpg')
print(os.path.isfile(imagefile))
0 голосов
/ 02 апреля 2020

Полагаю, вы пытаетесь выяснить, существует ли файл в каталоге.

Это может вам помочь:

import os
directory = <your_path>

for r, d, f in os.walk(directory):
   for file in f:
      if file == "photo.jpg":
         print("Found it!")

os.walk возвращает 3 переменные, root, имя_каталога и имена файлов.

Имена файлов находятся в списке так:

для каждого значения в списке,

, если это значение == то, что вы ищем

печать нашла его.

РЕДАКТИРОВАТЬ: Не совсем уверен, почему, но вы, кажется, не хотите для l oop в вашем основном коде.

Сделайте это:

def findfile(directory, filename):
   for r, d, f in os.walk(directory):
      for file in f:
         if file == filename:
             print("Found it!")

findfile(directory, "photo.jpg")

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

...