Python: Nur einmal in einer Schleife drucken

Ich habe einen Code, wo ich ein Video von einer Kamera erfassen möchte. Ich möchte die Logging-Bibliothek von Python verwenden, um Nachrichten auf der Shell zu erhalten oder sie in eine Textdatei zu exportieren.

Hier ist ein Teil von meinem Code, wo in der while-Schleife Ich möchte drucken Kamera eröffnet erfolgreich

import numpy as np import cv2 import logging as log cap = cv2.VideoCapture('5.mpg') while True: ret, image = cap.read() if ret == True: log.warning('Camera Opened Successfully') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) clahe = cv2.createCLAHE(clipLimit = 15.0, tileGridSize=(8,8)) gray1 = clahe.apply(gray) 

Aber was ich in der Schale bekomme, ist das:

Bis ich das laufende Skript beendet habe. Jede Idee, wie man es nur einmal drucken kann.

6 Solutions collect form web for “Python: Nur einmal in einer Schleife drucken”

 import numpy as np import cv2 import logging as log cap = cv2.VideoCapture('5.mpg') hasOpened = False while True: ret, image = cap.read() if ret and not hasOpened: log.warning('Camera Opened Successfully') hasOpened = True 

Wenn du nach dem Drucken aus der Schleife herausbrechen willst, folge Matt's Antwort. Diese Option wird in der Schleife fortgesetzt und nur einmal gedruckt.

Fügen Sie einen zusätzlichen Booleschen hinzu, um zu verfolgen, ob Sie es vorher ausgedruckt haben:

 import numpy as np import cv2 import logging as log cap = cv2.VideoCapture('5.mpg') printed = False while True: ret, image = cap.read() if ret == True and not printed: log.warning('Camera Opened Successfully') printed = True 

Du musst aus der Schleife ausbrechen

 import numpy as np import cv2 import logging as log cap = cv2.VideoCapture('5.mpg') while True: ret, image = cap.read() if ret == True: log.warning('Camera Opened Successfully') break 

Du musst die while-Schleife brechen, auch da du gern aus der Schleife herausbrechen möchtest, sobald du ret True kannst du:

 ret = False while not ret: ret, image = cap.read() if ret: log.warning('Camera Opened Successfully') # any other code 

Setzen Sie ein Flag, um das Protokoll auszulösen und dann falsch zu machen. Ret ist falsch zu machen, wenn du bereit bist, die Schleife zu verlassen, damit sie beendet wird

 import numpy as np import cv2 import logging as log cap = cv2.VideoCapture('5.mpg') ret = True logit = True while ret: ret, image = cap.read() if logit == True: log.warning('Camera Opened Successfully') logit = False gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) clahe = cv2.createCLAHE(clipLimit = 15.0, tileGridSize=(8,8)) gray1 = clahe.apply(gray) // process remainder of situation setting 

Angenommen, Sie möchten Ihre Hauptschleife verwenden, um Ihre Anwendungslogik zu behandeln, und es ist nicht sinnvoll, eine Schleife zu haben, um zu erkennen, ob sie geöffnet ist und eine andere für die Arbeit mit ihr dann denke ich, was Sie wollen, ist eine Variable zu bestimmen Wenn sich der Staat geändert hat.

 import numpy as np import cv2 import logging as log cap = cv2.VideoCapture('5.mpg') old_ret = False while True: ret, image = cap.read() if old_ret == False and ret == True: old_red = True log.warning('Camera Opened Successfully') if ret == True: # Do other things that need the camera but no log 
  • Bitte Code überprüfen mein Beispiel Python Programm
  • Pandas Ändern von DataFrames in Loop Teil 2
  • So erstellen Sie eine Schleife in Python
  • Ich versuche, meine Funktion zu beheben
  • Beschleunige doppelte Schleife in Python
  • Dreieck der Zahlen auf Python
  • Python: Wie bekomme ich die Eingabe von der Konsole, während eine Endlosschleife läuft?
  • Wie passe ich Vokale an?
  • Python if else loop verkettet Objekte
  • Zugriff auf Elemente mit Offsets in Python's für .. in Loops
  • Iterate über verschachtelte Listen und Wörterbücher
  • Python ist die beste Programmiersprache der Welt.