(перехватывать вывод в subprocess.PIPE, а после записывать это в файл)
'Карта: " + str(a) + " " + str(b) + " " + str(c) + " " + str(d) +"\nCVV: " + str(e))'
f"Карта: {a} {b} {c} {d}\nCVV: {e}"
a == 2 or 3
означает "(а равно 2) или (а равно 3)". a == 2 or a == 3
, или a in (2, 3)
Как сделать чтобы он рисовал один прямоугольник до отпускания, а не рисовал кучу?
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()
# типы данных. Они могут быть классами, или описаниями вида typing.Tuple[int, str]
# так как ты не описал типы данных, я пишу тут заглушки typing.Any (т.е. что угодно)
# эти типы лучше описать в отдельном файле, который будет импортироваться остальными
Snaphot = typing.Any
PreparedSnapshot = typing.Any
SnapshotResult = typing.Any
# функции обработки. они могу быть раскиданы по отдельным файлам,
# но они должны импортить нужные модули, в т.ч. описание типов данных
# ни одна функция не должна выбрасывать исключения
def get_snapshot(site: str, name: str) -> typing.Optional[Snapshot]:
"Качает один снапшот с сайта и возвращает его, или None если была ошибка."
...
def prepare_snapshot(snapshot: Snapshot) -> typing.Optional[PreparedSnapshot]:
"Подготавливает один снапшот к обработке. Возвращает None при ошибке."
...
def process_prepared_snapshot(snapshot: PreparedSnapshot) -> typing.Optional[SnapshotResult]:
"Извлекает нужные сведения из одного снапшота и возвращает их как структуру данных, или None при неудаче."
...
# эта функция будет в главном запускаемом файле
# главный файл должен импортировать остальные
targets = zip(...) # ну или как ты там делаешь список
# и вот тут уже главный цикл
# вариант А - классический цикл
results: typing.List[SnapshotResult] = []
for site, name in targets:
snap = get_snapshot(site, name)
if snap is not None:
prepared = prepare_snapshot(snap)
if prepared is not None:
result = process_prepared_snapshot(prepared)
if result is not None:
results.append(result)
# вариант Б - более функциональный подход
# фильтрует коллекцию, отбрасывает None
def skipNone(items):
return filter(lambda item: item is not None, items)
results: typing.List[SnapshotResult] = list(skipNone(
map(process_prepared_snapshot, skipNone(
map(prepare_snapshot, skipNone(
get_snapshot(site, name) for site, name in targets
))
))
))
# в любом случае, у тебя есть список результатов results, делай с ним что хочешь.
aList = "http://сайт-со-снепшотами.com"
bList = ['список', 'имен', 'для', 'снепшотов', 'и', 'так', 'далее']
for a, b in zip(aList, bList):
('h', 'список'), ('t', 'имен'), ('t', 'для'), ('p', 'снепшотов'), (':', 'и'), ('/', 'так'), ('/', 'далее'), ...
def process_dict(d: dict):
pass # тут работаешь с этим словарём
# рекурсивный вызов для вложенных словарей
subresults = [process_dict(subdict) for subdict in d['subCategories']]
pass # тут объединяешь результаты от вложенных словарей с основным результатом
return ... # обязательно возвращаешь результат
Не так, переменная меняется не присвоением ей значения, а за счет парсинга с сайта
old_value = None
while True:
new_value = parse_site() # parse_site() - написанная тобой функция, которая возвращает искомое значение
if old_value is not None and new_value != old_value: # если это не первый раз, и значение изменилось
print('Значение изменилось!')
old_value = new_value # чтобы в следующий раз сравнивать с последним увиденным значением
time.sleep(600) # спим 10 минут, чтобы не долбить сайт запросами
slovar[username] = {"Name":name}
slovar[username] = {"Familia":familia}
slovar[username] = {"Data":ddmmyy}
slovar[username] = {"Nomer":nomer}
slovar[username] = {
"Name":name, # инглиш
"Familia":familia, # рунглиш
"Data":ddmmyy, # рунглиш
"Nomer":nomer, # рунглиш
}
dialogue = dict() # обычный питоновский словарь
# datasource - коллекция строк. Но данные можно читать и построчно из файла
# with open('text.txt', 'rt') as datasource:
datasource = """mom - Hello, do you need anything in the shop?
brother - Yes, bring some fruits
dad - And beer
mom - okey
dad - thx
brother - thx
""".split()
for line in datasource:
actor, _, text = line.split(' - ') # разбиваем строку на две части
if _ is not None: # нашли разделитель, действуем
# если нужного ключа не было, создать его с указанным значением,
# (в нашем случае с новым пустым списком) и вернуть это значение
# а если ключ был, то просто вернуть его значение
actor_lines = dialogue.setdefault(actor.lower(), [])
actor_lines.append(text)
print(dialogue)
from collections import defaultdict
# если у словаря спрашивают неизвестный ключ, он по-тихому
# поместит по этому ключу пустой список, и отдаст этот список
# этот словарь будет хранить результат
dialogue = defaultdict(list) # list - фабрика новых значений
# datasource - коллекция строк. Но данные можно читать и построчно из файла
# with open('text.txt', 'rt') as datasource:
datasource = """mom - Hello, do you need anything in the shop?
brother - Yes, bring some fruits
dad - And beer
mom - okey
dad - thx
brother - thx
""".split()
for line in datasource:
actor, _, text = line.split(' - ') # разбиваем строку на две части
if _ is not None: # нашли разделитель, действуем
# если нужного значения ключа не было, defaultdict сам создаст запрошенный ключ
# так что мы гарантированно получим список
dialogue[actor.lower()].append(text)
print(dialogue)
txt = List_1[0]
txt = # тут твой код
List_1[0] = txt
# файл a.py
def putin():
c = 'punctuati'
c = c * 2
print(c)
# файл b.py
from a import putin
putin()
encoding=eng
лишнее. У тебя код закодировал строку в utf-8 при создании объекта bytes(), так что она оказалась уже дважды закодирована.strange_string = '"message":"\xd0\x9f\xd0\xbb\xd0\xb0\xd1\x82\xd0\xb5\xd0\xb6 \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xb7\xd0\xbc\xd0\xbe\xd0\xb6\xd0\xb5\xd0\xbd"'
bstring = bytes(ord(c) for c in strange_string) # конструируем строку байт побайтово, из кодов символов в строке
result = bstring.decode('utf-8')
print(result)
cv2_inwrite(/content/2 (1).jpeg, im)
class Test:
a: list = []
Test.a
тоже даст [3]. class Test:
def __init__(self): # конструктор
self.a: list = []
a b b a b a a ....
A b b a b a a ....
a B b a b a a ....
a B a b a a ....
a b A b a a ....