Вопрос с одной стороны простой, но что-то не могу допереть.
Есть скрипт, который печатает координаты в консоль.
405 392 1095 836
1184 553 1372 796
Все это я осбираюсь вывести в output файл, но есть одно но, если я ошибусь, он мне запишет и потом надо вручную удалять.
sys.stdout = open('output.txt','wt')
Так вот, суть вопроса, можно ли сделать запись последней строчки вывода в файл по нажатию?
Допустим есть вывод:
1
1
1
1
2
И как только я добился 2, жму отправить, а 1 он скипает (это чисто пример, выше писал что это будут координаты)
Для лучшего понимания, вот скрипт
import cv2
import sys
import matplotlib.pyplot as plt
original = cv2.imread(sys.argv[1])
ix = -1
iy = -1
drawing = False
def draw_reactangle_with_drag(event, x, y, flags, param):
global ix, iy, drawing, original
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix = x
iy = y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
img = original.copy()
cv2.rectangle(img, pt1=(ix,iy), pt2=(x, y),color=(0,255,255),thickness=10)
cv2.imshow("Title of Popup Window", img)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
img = original.copy()
cv2.rectangle(img, pt1=(ix,iy), pt2=(x, y),color=(0,255,255),thickness=10)
print(ix, iy, x, y)
cv2.imshow("Title of Popup Window", img)
cv2.namedWindow(winname= "Title of Popup Window")
cv2.setMouseCallback("Title of Popup Window", draw_reactangle_with_drag)
cv2.imshow("Title of Popup Window", original)
while True:
if cv2.waitKey(10) == 27:
break
cv2.destroyAllWindows()
И вот это
print(ix, iy, x, y)
я хочу добавлять в файл выборочно
UPDATE, ПОИГРАЛСЯ С ТАКИМ ВАРИАНТОМ, НО ОН НЕ РАБОТАЕТ КАК НАДО
while True:
if cv2.waitKey(10) == ord('w'):
file_path = 'log.txt'
sys.stdout = open(file_path, "a")
if cv2.waitKey(10) == ord('q'):
break
cv2.destroyAllWindows()
os.system('cls' if os.name == 'nt' else 'clear')
print("\nCoords x, y, ix, iy)
Но есть две проблемы:
Он печатает со второго изображения (у меня идут 1, 2, 3)
И даже с учетом чистки, он все-равно добавляет все стертые выводы