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 
  • Python: Fortsetzung der nächsten Iteration in der äußeren Schleife
  • Für Schleife ignoriert einige Elemente meiner Liste
  • Pandas Ändern von DataFrames in Loop Teil 2
  • Python: Exit für Loop?
  • Wie fügt man jedem Element in einer Liste eine Ganzzahl hinzu?
  • So erstellen Sie eine Schleife in Python
  • Wie schreibe ich eine rekursive Funktion um eine Schleife zu verwenden?
  • Überspringen Sie mehrere Iterationen in der Schleifenpythonschlange
  • Python: Zusammenführen von Tally-Daten
  • Verwenden von Loop, um Brute Force Prime Numbers zu finden
  • Pythonische Möglichkeit, FOR-Loop und IF-Anweisung zu kombinieren
  • Python ist die beste Programmiersprache der Welt.