prehistory
рдЕрд╕реЗ рдШрдбрд▓реЗ рдХреА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд░реЕрдиреНрд╕рдорд╡реЗрдЕрд░ рд╡реНрд╣рд╛рдпрд░рд╕рдиреЗ рд╣рд▓реНрд▓рд╛ рдХреЗрд▓рд╛, рдЬреНрдпрд╛рдиреЗ "рднрд╛рдЧреНрдпрд╡рд╛рди рдЕрдкрдШрд╛рддрд╛рдиреЗ" .ibd рдлрд╛рдЗрд▓реНрд╕ (рдЗрдиреЛрдбрдмреА рдЯреЗрдмрд▓реНрд╕рдЪреНрдпрд╛ рдХрдЪреНрдЪреНрдпрд╛ рдбреЗрдЯрд╛ рдлрд╛рдЗрд▓реНрд╕) рдЕрдВрд╢рддрдГ рдЕрд╕реНрдкрд░реНрд╢ рдХреЗрд▓реНрдпрд╛, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪ рд╡реЗрд│реА .fpm рдлрд╛рдЗрд▓реНрд╕ рдкреВрд░реНрдгрдкрдгреЗ рдХреВрдЯрдмрджреНрдз рдХреЗрд▓реНрдпрд╛ ( рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓реНрд╕). рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, .idb рдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:
- рдорд╛рдирдХ рд╕рд╛рдзрдиреЗ рдЖрдгрд┐ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХрд╛рдВрджреНрд╡рд╛рд░реЗ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрдзреАрди. рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдВрд╕рд╛рдареА, рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЖрд╣реЗ
рдмрдирдгреЗ ; - рдЕрдВрд╢рддрдГ рдХреВрдЯрдмрджреНрдз рд╕рд╛рд░рдгреНрдпрд╛. рдмрд╣реБрддреЗрдХ рд╣реА рдореЛрдареНрдпрд╛ рдЯреЗрдмрд▓реНрд╕ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рд╕рд╛рдареА (рдЬрд╕реЗ рдорд▓рд╛ рд╕рдордЬрддреЗ) рдЖрдХреНрд░рдордгрдХрд░реНрддреНрдпрд╛рдВрдХрдбреЗ рдкреВрд░реНрдг рдПрдирдХреНрд░рд┐рдкреНрд╢рдирд╕рд╛рдареА рдкреБрд░реЗрд╢реА RAM рдирд╡реНрд╣рддреА;
- рдмрд░рдВ, рдкреВрд░реНрдгрдкрдгреЗ рдХреВрдЯрдмрджреНрдз рд╕рд╛рд░рдгреНрдпрд╛ рдЬреНрдпрд╛ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд.
рдЗрдЪреНрдЫрд┐рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЕрдВрддрд░реНрдЧрдд рдХреЛрдгрддреНрдпрд╛рд╣реА рдордЬрдХреВрд░ рд╕рдВрдкрд╛рджрдХрд╛рдордзреНрдпреЗ (рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреЗ UTF8 рдЖрд╣реЗ) рдЙрдШрдбреВрди рдЖрдгрд┐ рдлрдХреНрдд рдордЬрдХреВрд░ рдлреАрд▓реНрдбрдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрд╕рд╛рдареА рдлрд╛рдИрд▓ рдкрд╛рд╣реВрди рдЯреЗрдмрд▓ рдХреЛрдгрддреНрдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:
рддрд╕реЗрдЪ, рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреБрдореНрд╣реА рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ 0 рдмрд╛рдЗрдЯреНрд╕ рдЖрдгрд┐ рдмреНрд▓реЙрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЕрд▓реНрдЧреЛрд░рд┐рджрдо (рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп) рд╡рд╛рдкрд░рдгрд╛рд░реЗ рд╡реНрд╣рд╛рдпрд░рд╕ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╡рд░ рджреЗрдЦреАрд▓ рдкрд░рд┐рдгрд╛рдо рдХрд░рддрд╛рдд.
рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдХреНрд░рдордгрдХрд░реНрддреНрдпрд╛рдВрдиреА рдкреНрд░рддреНрдпреЗрдХ рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╛рдИрд▓рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА 4-рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ (1, 0, 0, 0) рд╕реЛрдбрд▓реА, рдЬреНрдпрд╛рдиреЗ рдХрд╛рд░реНрдп рд╕реБрд▓рдн рдХреЗрд▓реЗ. рд╡рд┐рдирд╛рд╕рдВрдХреНрд░рдорд┐рдд рдлрд╛рдпрд▓реА рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд░реЗрд╢реА рд╣реЛрддреА:
def opened(path):
files = os.listdir(path)
for f in files:
if os.path.isfile(path + f):
yield path + f
for full_path in opened("C:somepath"):
file = open(full_path, "rb")
last_string = ""
for line in file:
last_string = line
file.close()
if (last_string[len(last_string) -4:len(last_string)]) != (1, 0, 0, 0):
print(full_path)
рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдкреНрд░рдердо рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдлрд╛рдпрд▓реА рд╢реЛрдзрдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛. рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ рдмрд░реЗрдЪ рдореЕрдиреНрдпреБрдЕрд▓ рдХрд╛рдо рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЬреЗ рд╕рд╛рдкрдбрд▓реЗ рддреЗ рдЖрдзреАрдЪ рдкреБрд░реЗрд╕реЗ рд╣реЛрддреЗ. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рд╣реЛрдИрд▓, рдкрд░рдВрддреБ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдкреВрд░реНрдгрдкрдгреЗ рдЕрдЪреВрдХ рд░рдЪрдирд╛ рдЖрдгрд┐ (рдЕрд░реНрдерд╛рддрдЪ) рдПрдХ рдХреЗрд╕ рдЙрджреНрднрд╡рд▓реА рдХреА рдорд▓рд╛ рд╡рд╛рд░рдВрд╡рд╛рд░ рдмрджрд▓рдгрд╛рд▒реНрдпрд╛ рдЯреЗрдмрд▓рд╕рд╣ рдХрд╛рдо рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдлреАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдмрджрд▓рд▓рд╛ рд╣реЛрддрд╛ рдХрд┐рдВрд╡рд╛ рдирд╡реАрди рд╕реНрддрдВрдн рдЬреЛрдбрд▓рд╛ рд╣реЛрддрд╛ рд╣реЗ рдХреЛрдгрд╛рд▓рд╛рдЪ рдЖрдард╡рдд рдирд╛рд╣реА.
Wilds City, рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдорджрдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдореНрд╣рдгреВрдирдЪ рд╣рд╛ рд▓реЗрдЦ рд▓рд┐рд╣рд┐рд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ.
рдореБрджреНрджреНрдпрд╛рд╡рд░ рдпрд╛
3 рдорд╣рд┐рдиреНрдпрд╛рдВрдкреВрд░реНрд╡реАрдЪреНрдпрд╛ рдЯреЗрдмрд▓рдЪреА рд░рдЪрдирд╛ рдЖрд╣реЗ рдЬреА рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ (рд╢рдХреНрдпрддреЛ рдПрдХ рдлреАрд▓реНрдб рдЖрдгрд┐ рд╢рдХреНрдпрддреЛ рдЕрдзрд┐рдХ) рд╢реА рдЬреБрд│рдд рдирд╛рд╣реА. рд╕рд╛рд░рдгреА рд░рдЪрдирд╛:
CREATE TABLE `table_1` (
`id` INT (11),
`date` DATETIME ,
`description` TEXT ,
`id_point` INT (11),
`id_user` INT (11),
`date_start` DATETIME ,
`date_finish` DATETIME ,
`photo` INT (1),
`id_client` INT (11),
`status` INT (1),
`lead__time` TIME ,
`sendstatus` TINYINT (4)
);
рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд╛рдврдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:
id_point
int(11);id_user
int(11);date_start
рддрд╛рд░реАрдЦ рд╡реЗрд│;date_finish
рддрд╛рд░реАрдЦ рд╡реЗрд│.
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреАрд╕рд╛рдареА, .ibd рдлрд╛рдЗрд▓рдЪреЗ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рддреНрдпрд╛рдирдВрддрд░ рддреЗ рдЕрдзрд┐рдХ рд╡рд╛рдЪрдиреАрдп рд╕реНрд╡рд░реВрдкрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЗрдВрдЯ рдЖрдгрд┐ рдбреЗрдЯрд╛рдЯрд╛рдЗрдо рд╕рд╛рд░рдЦреНрдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рд▓реЗрдЦ рдлрдХреНрдд рддреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрд▓, рдкрд░рдВрддреБ рдХрд╛рд╣реАрд╡реЗрд│рд╛ рдЖрдореНрд╣реА рдЗрддрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪрд╛ рджреЗрдЦреАрд▓ рд╕рдВрджрд░реНрдн рдШреЗрдК, рдЬреЗ рдЗрддрд░ рд╕рдорд╛рди рдШрдЯрдирд╛рдВрдордзреНрдпреЗ рдорджрдд рдХрд░реВ рд╢рдХрддрд╛рдд.
рд╕рдорд╕реНрдпрд╛ рез: DATETIME рдЖрдгрд┐ TEXT рдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╣ рдлреАрд▓реНрдбрдордзреНрдпреЗ NULL рдореВрд▓реНрдпреЗ рд╣реЛрддреА, рдЖрдгрд┐ рддреА рдлрдХреНрдд рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╡рдЧрд│рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд, рдпрд╛рдореБрд│реЗ, рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрд░рдЪрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ. рдирд╡реАрди рд╕реНрддрдВрднрд╛рдВрдордзреНрдпреЗ, рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛрддреЗ рдЖрдгрд┐ innodb_flush_log_at_trx_commit = 0 рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧрдореБрд│реЗ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪрд╛ рдХрд╛рд╣реА рднрд╛рдЧ рдЧрдорд╛рд╡рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рддреНрдпрд╛рдореБрд│реЗ рд░рдЪрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реЗрд│ рдЦрд░реНрдЪ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓.
рд╕рдорд╕реНрдпрд╛ рез: рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА DELETE рджреНрд╡рд╛рд░реЗ рд╣рдЯрд╡рд▓реЗрд▓реНрдпрд╛ рдкрдВрдХреНрддреА рд╕рд░реНрд╡ ibd рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЕрд╕рддреАрд▓, рдкрд░рдВрддреБ ALTER TABLE рд╕рд╣ рддреНрдпрд╛рдВрдЪреА рд░рдЪрдирд╛ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реА рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА. рдкрд░рд┐рдгрд╛рдореА, рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди рд╢реЗрд╡рдЯрдкрд░реНрдпрдВрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓реВ рд╢рдХрддреЗ. рддреБрдореНрд╣реА рдЕрдиреЗрдХрджрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдЯреЗрдмрд▓ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╢реА рд╕рдорд╕реНрдпрд╛ рдпреЗрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдирд╛рд╣реА.
рд▓рдХреНрд╖ рджреНрдпрд╛, DBMS рдЖрд╡реГрддреНрддреА рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рддреЗ рдЖрдгрд┐ рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдЗрддрд░ рдкреНрд░рдореБрдЦ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, mariadb 10.1.24 рдЪреА рд╡рд┐рдВрдбреЛрдЬ рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рд▓реА рдЧреЗрд▓реА. рддрд╕реЗрдЪ, рдЬрд░реА mariadb рдордзреНрдпреЗ рддреБрдореНрд╣реА InnoDB рдЯреЗрдмрд▓рд╕рд╣ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд▓рд╛рдд рддрд░реА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЗ рдЖрд╣реЗрдд
рдлрд╛рдЗрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдкрд╛рдпрдердирдордзреНрдпреЗ, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
рдЕрдиреЗрдХ ibd рдлрд╛рдЗрд▓реНрд╕ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреБрдвреАрд▓ рдЧреЛрд╖реНрдЯреА рдорд┐рд│реВ рд╢рдХрддрд╛рдд:
рд╢рд┐рд╡рд╛рдп, рдЬрд░ рддреБрдореНрд╣реА рдлрд╛рдЗрд▓рд▓рд╛ рдпрд╛ рдХреАрд╡рд░реНрдбрджреНрд╡рд╛рд░реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреЗрд▓реЗ рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдмрд╣реБрддрд╛рдВрд╢ рдбреЗрдЯрд╛рдЪреЗ рдмреНрд▓реЙрдХреНрд╕ рдорд┐рд│рддреАрд▓. рдЖрдореНрд╣реА infimum рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░реВ.
table = table.split("infimum".encode())
рдПрдХ рдордиреЛрд░рдВрдЬрдХ рдирд┐рд░реАрдХреНрд╖рдг: рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рд░рдгреНрдпрд╛рдВрд╕рд╛рдареА, рдЗрдиреНрдлрд┐рдордо рдЖрдгрд┐ рд╕рд░реНрд╡реЛрдЪреНрдЪ рджрд░рдореНрдпрд╛рди рдмреНрд▓реЙрдХрдордзреАрд▓ рдкрдВрдХреНрддреАрдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЖрд╣реЗ.
- рдкрд╣рд┐рд▓реНрдпрд╛ рдкрдВрдХреНрддреАрд╕рд╣ рдЪрд╛рдЪрдгреА рд╕рд╛рд░рдгреА
- 2 рдкрдВрдХреНрддреАрд╕рд╣ рдЪрд╛рдЪрдгреА рд╕рд╛рд░рдгреА
рдкрдВрдХреНрддреА рдЕреЕрд░реЗ рд╕рд╛рд░рдгреА[0] рд╡рдЧрд│рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рддреЗ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдирдВрддрд░, рдорд▓рд╛ рдЕрдЬреВрдирд╣реА рд░реЙ рдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рд╕рд╛рдкрдбрд▓рд╛ рдирд╛рд╣реА. рдмрд╣реБрдзрд╛, рд╣рд╛ рдмреНрд▓реЙрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдгрд┐ рдХреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.
рд╕рд╛рд░рдгреА[1] рдиреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрди рдЖрдгрд┐ рдЕрдВрдХреАрдп рдЕреЕрд░реЗрдордзреНрдпреЗ рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХрд░реВрди, рдЖрдкрдг рдЖрдзреАрдЪ рдХрд╛рд╣реА рдирдореБрдиреЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддрд╛, рдореНрд╣рдгрдЬреЗ:
рд╣реА рдЗрдВрдЯ рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд╕рд╛рдард╡рд▓реЗрд▓реА рдЕрд╕рддрд╛рдд. рдкрд╣рд┐рд▓рд╛ рдмрд╛рдЗрдЯ рд╕рдВрдЦреНрдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХрд┐рдВрд╡рд╛ рдЛрдг рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╕рд░реНрд╡ рд╕рдВрдЦреНрдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЖрд╣реЗрдд. рдЙрд░реНрд╡рд░рд┐рдд 3 рдмрд╛рдЗрдЯреНрд╕рдордзреВрди, рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд░реВрди рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
def find_int(val: str): # example '128, 1, 2, 3'
val = [int(v) for v in val.split(", ")]
result_int = val[1]*256**2 + val[2]*256*1 + val[3]
return result_int
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, 128, 0, 0, 1 = 1, рдХрд┐рдВрд╡рд╛ 128, 0, 75, 108 = 19308.
рдЯреЗрдмрд▓рдордзреНрдпреЗ рд╕реНрд╡рдпрдВ-рд╡рд╛рдвреАрд╕рд╣ рдкреНрд░рд╛рдердорд┐рдХ рдХреА рд╣реЛрддреА рдЖрдгрд┐ рддреА рдпреЗрдереЗ рджреЗрдЦреАрд▓ рдЖрдврд│реВ рд╢рдХрддреЗ
рдЪрд╛рдЪрдгреА рд╕рд╛рд░рдгреНрдпрд╛рдВрд╡рд░реАрд▓ рдбреЗрдЯрд╛рдЪреА рддреБрд▓рдирд╛ рдХреЗрд▓реНрдпрд╛рд╡рд░, рд╣реЗ рдЙрдШрдб рдЭрд╛рд▓реЗ рдХреА DATETIME рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ 5 рдмрд╛рдЗрдЯреНрд╕ рдЕрд╕рддрд╛рдд рдЖрдгрд┐ 153 рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА (рдмрд╣реБрдзрд╛ рд╡рд╛рд░реНрд╖рд┐рдХ рдЕрдВрддрд░рд╛рд▓ рджрд░реНрд╢рд╡рддреЗ). DATTIME рд╢реНрд░реЗрдгреА '1000-01-01' рддреЗ '9999-12-31' рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдмрд╛рдЗрдЯреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рднрд┐рдиреНрди рдЕрд╕реВ рд╢рдХрддреЗ, рдкрд░рдВрддреБ рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдбреЗрдЯрд╛ 2016 рддреЗ 2019 рдпрд╛ рдХрд╛рд▓рд╛рд╡рдзреАрдд рдпреЗрддреЛ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдЧреГрд╣реАрдд рдзрд░реВ 5 рдмрд╛рдЗрдЯреНрд╕ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗрдд.
рд╕реЗрдХрдВрджрд╛рдВрд╢рд┐рд╡рд╛рдп рд╡реЗрд│ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдпреЗ рд▓рд┐рд╣рд┐рд▓реА рдЧреЗрд▓реА. рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
day_ = lambda x: x % 64 // 2 # {x,x,X,x,x }
def hour_(x1, x2): # {x,x,X1,X2,x}
if x1 % 2 == 0:
return x2 // 16
elif x1 % 2 == 1:
return x2 // 16 + 16
else:
raise ValueError
min_ = lambda x1, x2: (x1 % 16) * 4 + (x2 // 64) # {x,x,x,X1,X2}
рд╡рд░реНрд╖ рдЖрдгрд┐ рдорд╣рд┐рдиреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдп рд▓рд┐рд╣рд┐рдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ, рдореНрд╣рдгреВрди рдорд▓рд╛ рддреЗ рд╣реЕрдХ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
ym_list = {'2016, 1': '153, 152, 64', '2016, 2': '153, 152, 128',
'2016, 3': '153, 152, 192', '2016, 4': '153, 153, 0',
'2016, 5': '153, 153, 64', '2016, 6': '153, 153, 128',
'2016, 7': '153, 153, 192', '2016, 8': '153, 154, 0',
'2016, 9': '153, 154, 64', '2016, 10': '153, 154, 128',
'2016, 11': '153, 154, 192', '2016, 12': '153, 155, 0',
'2017, 1': '153, 155, 128', '2017, 2': '153, 155, 192',
'2017, 3': '153, 156, 0', '2017, 4': '153, 156, 64',
'2017, 5': '153, 156, 128', '2017, 6': '153, 156, 192',
'2017, 7': '153, 157, 0', '2017, 8': '153, 157, 64',
'2017, 9': '153, 157, 128', '2017, 10': '153, 157, 192',
'2017, 11': '153, 158, 0', '2017, 12': '153, 158, 64',
'2018, 1': '153, 158, 192', '2018, 2': '153, 159, 0',
'2018, 3': '153, 159, 64', '2018, 4': '153, 159, 128',
'2018, 5': '153, 159, 192', '2018, 6': '153, 160, 0',
'2018, 7': '153, 160, 64', '2018, 8': '153, 160, 128',
'2018, 9': '153, 160, 192', '2018, 10': '153, 161, 0',
'2018, 11': '153, 161, 64', '2018, 12': '153, 161, 128',
'2019, 1': '153, 162, 0', '2019, 2': '153, 162, 64',
'2019, 3': '153, 162, 128', '2019, 4': '153, 162, 192',
'2019, 5': '153, 163, 0', '2019, 6': '153, 163, 64',
'2019, 7': '153, 163, 128', '2019, 8': '153, 163, 192',
'2019, 9': '153, 164, 0', '2019, 10': '153, 164, 64',
'2019, 11': '153, 164, 128', '2019, 12': '153, 164, 192',
'2020, 1': '153, 165, 64', '2020, 2': '153, 165, 128',
'2020, 3': '153, 165, 192','2020, 4': '153, 166, 0',
'2020, 5': '153, 166, 64', '2020, 6': '153, 1, 128',
'2020, 7': '153, 166, 192', '2020, 8': '153, 167, 0',
'2020, 9': '153, 167, 64','2020, 10': '153, 167, 128',
'2020, 11': '153, 167, 192', '2020, 12': '153, 168, 0'}
def year_month(x1, x2): # {x,X,X,x,x }
for key, value in ym_list.items():
key = [int(k) for k in key.replace("'", "").split(", ")]
value = [int(v) for v in value.split(", ")]
if x1 == value[1] and x2 // 64 == value[2] // 64:
return key
return 0, 0
рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рдЬрд░ рддреБрдореНрд╣реА рдЬрд╛рд╕реНрдд рд╡реЗрд│ рджрд┐рд▓рд╛ рддрд░ рд╣рд╛ рдЧреИрд░рд╕рдордЬ рджреБрд░реБрд╕реНрдд рдХрд░рддрд╛ рдпреЗрдИрд▓.
рдкреБрдвреЗ, рдПрдХ рдлрдВрдХреНрд╢рди рдЬреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреВрди рдбреЗрдЯрдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд│рд╡рддреЗ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
def find_data_time(val:str):
val = [int(v) for v in val.split(", ")]
day = day_(val[2])
hour = hour_(val[2], val[3])
minutes = min_(val[3], val[4])
year, month = year_month(val[1], val[2])
return datetime(year, month, day, hour, minutes)
int, int, datetime, datetime рд╡рд░реВрди рд╡рд╛рд░рдВрд╡рд╛рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрдгрд╛рд░реА рдореВрд▓реНрдпреЗ рд╢реЛрдзрдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд , рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗрдЪ рд╣рд╡реЗ рдЖрд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ. рд╢рд┐рд╡рд╛рдп, рдЕрд╕рд╛ рдХреНрд░рдо рдкреНрд░рддрд┐ рдУрд│реАрдд рджреЛрдирджрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрдд рдирд╛рд╣реА.
рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд╡рд╛рдкрд░реБрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕рд╛рдкрдбрддреЛ:
fined = re.findall(r'128, d*, d*, d*, 128, d*, d*, d*, 153, 1[6,5,4,3]d, d*, d*, d*, 153, 1[6,5,4,3]d, d*, d*, d*', int_array)
рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд╡рд╛рдкрд░реВрди рд╢реЛрдзрддрд╛рдирд╛, рдЖрд╡рд╢реНрдпрдХ рдлреАрд▓реНрдбрдордзреНрдпреЗ NULL рдореВрд▓реНрдпреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд рд╣реЗ рдЧрдВрднреАрд░ рдирд╛рд╣реА. рдордЧ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд▓реВрдкрдордзреНрдпреЗ рдЬреЗ рд╕рд╛рдкрдбрд▓реЗ рддреЗ рдЖрдкрдг рдкрд╛рд╣реВ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
result = []
for val in fined:
pre_result = []
bd_int = re.findall(r"128, d*, d*, d*", val)
bd_date= re.findall(r"(153, 1[6,5,4,3]d, d*, d*, d*)", val)
for it in bd_int:
pre_result.append(find_int(bd_int[it]))
for bd in bd_date:
pre_result.append(find_data_time(bd))
result.append(pre_result)
рд╡рд╛рд╕реНрддрд╡рд┐рдХ, рдЗрддрдХреЗрдЪ, рдирд┐рдХрд╛рд▓ рдЕреЕрд░реЗрдордзреАрд▓ рдбреЗрдЯрд╛ рд╣рд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдЖрд╣реЗ. ###PS.###
рдорд▓рд╛ рд╕рдордЬрд▓реЗ рдЖрд╣реЗ рдХреА рд╣реА рдкрджреНрдзрдд рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╛рд╣реА, рдкрд░рдВрддреБ рд▓реЗрдЦрд╛рдЪреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдЖрдкрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рддреНрд╡рд░рд┐рдд рдХрд╛рд░рд╡рд╛рдИ рдХрд░рдгреЗ рдЖрд╣реЗ. рдорд▓рд╛ рд╡рд╛рдЯрддрдВ, рд╕реЛрд░реНрд╕ рдХреЛрдбрдЪрд╛ рд╕реНрд╡рддрдГ рдЕрднреНрдпрд╛рд╕ рдХрд░рдгреЗ рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рдпреЛрдЧреНрдп рдЙрдкрд╛рдп рдЖрд╣реЗ
рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рдлрд╛рдЗрд▓рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдкрдг рдЕрдВрджрд╛рдЬреЗ рд░рдЪрдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрдгрд┐ рд╡рд░реАрд▓ рджреБрд╡реНрдпрд╛рдВрдордзреВрди рдорд╛рдирдХ рдкрджреНрдзрддреАрдВрдкреИрдХреА рдПрдХ рд╡рд╛рдкрд░реВрди рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рд╡реНрд╣рд╛рд▓. рд╣реЗ рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдХрдореА рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрд▓.
рд╕реНрддреНрд░реЛрдд: www.habr.com