Если работает, но Else не работает, был бы цикл лучшим вариантом? (Python)

#python #if-statement

#python #оператор if

Вопрос:

Я просмотрел много вопросов и перепробовал много предложений, но, похоже, я просто не могу заставить работать что-то простое. По сути, я хотел бы запустить свой скрипт в цикле. Если файл присутствует, распечатайте и повторите. Если файл отсутствует, перейдите в режим ожидания на 19 минут, а затем снова запустите скрипт. Я могу заставить часть «if» нормально работать при наличии файла. Когда файл отсутствует, ничего не происходит. Я также полностью запутался в создании цикла.

 import os, shutil
import glob
import time

source = 'C:/File Location/Files'

files = os.listdir(source)

files = glob.iglob(os.path.join(' C:/File Location/Files ', "*.pdf"))


for file in files:
    if os.path.isfile(file):
        time.sleep(30)
        print ("Success")
    else:
        time.sleep(1140)    

  

Комментарии:

1. Что, по-вашему, «произойдет», когда программа перейдет в спящий режим на 19 минут?

2. Должна ли программа останавливаться, если находит файл, или просто продолжать печатать его как можно быстрее?

3. Итак, я установил время ожидания на 30 секунд вместо 19 минут, чтобы посмотреть, действительно ли он перешел в режим ожидания, а это не так. Когда во время выполнения части инструкции if выполняется time.sleep (30), мой курсор мыши показывает, что происходит процесс. Затем он печатает так, как должен. В части else ничего не происходит, нет курсора мыши, ничего.

4. Если он находит файл, он должен напечатать один раз. Затем я переместу файл в другую папку (дополнительный код, который я не включил, потому что это не проблема). Затем я хочу, чтобы он запускался снова в случае наличия нескольких файлов. Если нет дополнительных файлов, переходите в режим ожидания на 19 минут, а затем запускайте снова.

Ответ №1:

Самый простой способ сделать то, что, я думаю, вы хотите сделать, — это использовать schedule. Вы можете использовать это следующим образом:

 schedule.every(60*19).seconds.do(<your file function>)

while True:
   schedule.run_pending()
   time.sleep(1)
  

Это будет запускать содержимое вашего файла раз в 19 минут.

Если вы действительно хотите печатать файл непрерывно, за исключением случаев, когда его нет, и в этом случае он отключается на 19 минут, вы можете использовать:

 while True:
     if os.path.isfile(file):
         time.sleep(30)
         print("Succes")
     else:
         time.sleep(19*60)