Ошибка «ValueError: max () arg - пустая последовательность» - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю ошибку.Причина, по которой я получаю сообщение об ошибке, заключается в том, что в каталоге больше нет файлов с .mp4.Моя цель - запустить его, когда в каталоге есть файл .mp4, но возникают проблемы с определением циклов.

File "C:\PUBG\nn.py", line 8, in <module>
    newest = max(glob.iglob('*.[Mm][Pp]4'), ke
ValueError: max() arg is an empty sequence

import os
import glob
import numpy as np
import cv2

os.chdir('C:/Users/Main/Videos/PUBG/')

newest = max(glob.iglob('*.[Mm][Pp]4'), key=os.path.getctime)

os.replace((newest), 'replay.mp4')

if newest != max(glob.iglob('*.[Mm][Pp]4'), key=os.path.getctime):
    cap = cv2.VideoCapture('C:/Users/Main/Videos/PUBG/replay.mp4')

    def rescale_frame(frame, percent=25):
        width = int(frame.shape[1] * percent/ 100)
        height = int(frame.shape[0] * percent/ 100)
        dim = (width, height)
        return cv2.resize(frame, dim, interpolation =cv2.INTER_AREA)

    while True:
        ret ,frame = cap.read()
        if type(frame) == type(None):
            break
        frame25 = rescale_frame(frame, percent=25)
        cv2.imshow('frame25',frame25)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()
os.remove('replay.mp4')

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вот рабочий код, добавленный с помощью watchdog

import os
import glob
import numpy as np
import cv2
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class Watcher:
    DIRECTORY_TO_WATCH = 'C:/Users/Main/Videos/PUBG/'

    def __init__(self):
        self.observer = Observer()

    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH, recursive=True)
        self.observer.start()
        try:
            while True:
                time.sleep(1)
        except:
            self.observer.stop()


        self.observer.join()

class Handler(FileSystemEventHandler):

    @staticmethod
    def on_any_event(event):
        if event.is_directory:
            return None

        elif event.event_type == 'created':

            os.chdir('C:/Users/Main/Videos/PUBG/')

            newest = max(glob.iglob('*.[Mm][Pp]4'), key=os.path.getctime)

            os.replace((newest), 'replay.mp4')


            cap = cv2.VideoCapture('C:/Users/Main/Videos/PUBG/replay.mp4')

            def rescale_frame(frame, percent=25):
                width = int(frame.shape[1] * percent/ 100)
                height = int(frame.shape[0] * percent/ 100)
                dim = (width, height)
                return cv2.resize(frame, dim, interpolation =cv2.INTER_AREA)

            while True:
                ret ,frame = cap.read()
                if type(frame) == type(None):
                    break
                frame25 = rescale_frame(frame, percent=25)
                cv2.imshow('frame25',frame25)
                if cv2.waitKey(1) & 0xFF == ord('q'):
                    break
            cap.release()
            cv2.destroyAllWindows()
0 голосов
/ 26 апреля 2018

Сначала проверьте, пуст ли список:

times = [os.path.getctime(p) for p in glob.iglob('*.[Mm][Pp]4')]
if not times or newest != max(times): # you might want different logic here...
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...