
рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рдореЗрдВ рдЖрдк рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдЙрд╕рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рд╣реИред рдЖрдкрдиреЗ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдпрд╛ рддрдХрдиреАрдХ-рдкреНрд░реЗрдореА рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдЖрдкрдХреЗ рд▓рдХреНрд╖рд┐рдд рджрд░реНрд╢рдХ рдмрд╣реБрдд рддрдХрдиреАрдХреА рдЬрд╛рдирдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЛрдЧ рдЖрдкрдХреЗ рдкрд╛рдпрдерди рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рддрдм рддрдХ рдЧреБрд░реЗрдЬ рдирд╣реАрдВ рдХрд░рддреЗ рдЬрдм рддрдХ рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдЖрдк рдПрдХ рдЬреАрдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдЬреАрдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП 3 рдорд╣рд╛рди рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ; рдЯрд┐рдВрдХрд░, wxPython рдФрд░ PyQTред рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдореБрдЭреЗ рдкрд╛рдпрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╕рдВрдж рд╣реЛред рд╕реБрдкрд░ рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рд╕реЗ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдореВрд░реНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдмрд╕ рдЬрд╛рд╡рд╛ рдпрд╛ .Net рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рд▓реЗрдЦ EDISON рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ рдЙрдирдХреЗ рдирд╛рд╢реНрддреЗ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИ , рдФрд░ рдХрд╕реНрдЯрдо рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реИ ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЪреМрдереЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдкрд╛рд░ рдЖрдпрд╛, рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рдЖрдпрд╛ред рдпрд╣ PySimpleGUI рд╣реИ, рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рднреА 3 рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдХреА рдЪрд░реНрдЪрд╛ рдКрдкрд░ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реБрдкрд░ рддрдХрдиреАрдХреА рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рд╕рд╛рд░
рдЖрдЗрдП рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдПрдБ рдФрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВред
рджреЛ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ "рдкрд╛рдпрдерди рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ 3 рддреНрд╡рд░рд┐рдд рддрд░реАрдХреЗ" рдореЗрдВ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ рдЦрдВрдб, рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдЬрд╛рдБрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдореЗрдВ рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЬреАрдпреВрдЖрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо
рдЪрд┐рддреНрд░рдордп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import PySimpleGUI as sg layout = [ [sg.Text('File 1'), sg.InputText(), sg.FileBrowse(), sg.Checkbox('MD5'), sg.Checkbox('SHA1') ], [sg.Text('File 2'), sg.InputText(), sg.FileBrowse(), sg.Checkbox('SHA256') ], [sg.Output(size=(88, 20))], [sg.Submit(), sg.Cancel()] ] window = sg.Window('File Compare', layout) while True:
рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рд╣рдо рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдХреА рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рд╣рдореЗрдВ рдмрд╕ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╣рдо рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import PySimpleGUI as sg import re import hashlib def hash(fname, algo): if algo == 'MD5': hash = hashlib.md5() elif algo == 'SHA1': hash = hashlib.sha1() elif algo == 'SHA256': hash = hashlib.sha256() with open(fname) as handle:
рд╡рд╣ рд╣рдореЗрдВ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛:

рдЕрдВрддрд┐рдо рд╡рд┐рдЪрд╛рд░
рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PySimpleGUI рдЖрдкрдХреЛ рд╕рд░рд▓ рдкрд╛рдпрдерди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд╕рд░рд▓ рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ PyInstaller рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдЖрдкрдХреА рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ .exe рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрдЧреАред рд▓реЛрдЧ рдЗрд╕реЗ рдХреЗрд╡рд▓ рджреЛ рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд▓реЙрдиреНрдЪ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

рдмреНрд▓реЙрдЧ рднреА рдкрдврд╝реЗрдВ
EDISON рдХрдВрдкрдиреА:
рдХреЗ рд▓рд┐рдП 20 рдкреБрд╕реНрддрдХрд╛рд▓рдп
рд╢рд╛рдирджрд╛рд░ iOS рдЖрд╡реЗрджрди