Підготовка середовища Python
Щоб почати використовувати Python, потрібно переконатися, що він правильно встановлений, і все, що пов’язано з його залежностями, оновлено. Одне з перших дій, які слід зробити перед інсталяцією чогось іншого, - це ввести таку команду:
sudo apt-get update
Ця команда виконує перевірку оновлення для будь-якого з встановлених пакунків та шукає нові пакети, які були додані до сховищ. Після успішного запуску програми настав час перевірити, чи правильно встановлений python. Це можна підтвердити, набравши у вікні терміналу таку команду:
python3 -v
Якщо все пішло за планом, ви побачите номер версії як результат. Якщо ви дійшли до цього пункту без помилок, тепер ви можете перейти до завантаження IDE, щоб покращити роботу python. Для того, ми будемо використовувати ноутбук Юпітер. Для цього вам потрібно виконати таку команду:
sudo apt-get -y встановити ipython ipython notebook && pip install jupyter
Тепер ви достатньо підготовлені до написання простих програм Python, які можуть робити стисненими .zip-файли, а також розпакуйте їх.
Щоб запустити блокнот Jupyter, потрібно ввести в терміналі таку команду: jupyter notebook (Примітка: інтерфейс IDE, який ви побачите на знімках екрана нижче, буде дещо іншим, ніж ваш звичайний блокнот Jupyter. Все інше працює однаково)
Після запуску команди вона відкриє інтерфейс блокнота Jupyter у вашому веб-браузері, і звідти ви можете розпочати кодування, створивши новий файл блокнота. Після цього ви зможете без перешкод кодувати програми архівування.
Необхідний імпорт
Тепер, коли ми перейшли до частини кодування, спершу зробимо необхідне імпортування, яке нам знадобиться для здійснення цього завдання. Якщо ми просто збираємося створити програму, яка не робить нічого, крім створення zip-файлів із існуючих файлів, тоді нам просто потрібно імпортувати два модулі:
zipfile та osМодуль 'zipfile' досить зрозумілий. Він надає нам дуже прості у використанні функції, які дозволяють створювати zip-файли та додавати каталоги, файли та підкаталоги до новостворених zip-файлів з мінімальними зусиллями. Модуль також має набагато більше застосувань, і якщо ви хочете перевірити його справжній потенціал, сміливо гугніть його документацію в Інтернеті.
Модуль 'os' дозволяє нам мати справу з шляхом до файлів у наших програмах. Це дозволяє переглядати каталоги та перераховувати їх вміст найпростішими способами. Коли обидві ці бібліотеки використовуються разом, ви зможете легко створити кілька дуже надійних програм для обробки завдань стиснення для вас.
Тут починається застібка
Запустивши код на малюнку нижче у своєму блокноті, ви побачите, що у каталозі створено zip-файл, і його розмір також значно нижчий від вихідного файлу. Приклад, який ми обговорили, включав лише один файл.
Якщо ми хочемо зробити крок далі, де ми хочемо додати каталоги та кілька шляхів до нашого zip-файлу, нам потрібно буде запустити такий фрагмент коду.
Знову ж таки, після запуску сценарію, вам буде представлено новий zip-файл у каталозі, в якому ви зараз перебуваєте, і його розмір буде набагато меншим, ніж загальний розмір його вмісту.
Розпакування стиснених файлів
Ви могли вже здогадатися, і це правда. З бібліотеками, якими ми користуємося, майже всі тривіальні завдання, про які ми можемо подумати, були здебільшого ретельно розроблені в однорядкові рішення, і вони дуже ефективні. Те саме стосується розпакування вмісту файлів. Тут буде використаний той самий модуль zipfile, і після посилання на шлях до файлу ми просто викликаємо функцію, що називається екстрактал який у своїх аргументах візьме шлях, куди ми хочемо розпакувати zip-файл.
Чому обирають програмувати це?
Ну, відповідь на це питання дуже проста; автоматизація. Якщо ви працюєте з великими обсягами даних, вам, очевидно, знадобиться спосіб скоротити фізичну працю. У 2019 році, якщо щось можна автоматизувати, це слід автоматизувати. Просто немає сенсу виконувати надлишкове завдання, яке можна зробити набагато ефективніше за допомогою дуже економічного рішення. Енергія, яка витрачається на створення zip-файлів, в іншому випадку може бути використана для виконання чогось продуктивного.