Модуль shutil, python 3 для початківців і чайників

Модуль shutil містить набір функцій високого рівня для обробки файлів, груп файлів, і папок. Зокрема, доступні тут функції дозволяють копіювати, переміщати і видаляти файли і папки. Часто використовується разом з модулем os.

Операції над файлами і директоріями

При цьому, якщо позиція покажчика в fsrc ні тел.0 (тобто до цього було зроблено щось на зразок fsrc.read (47)), то буде копіюватися вміст починаючи з поточної позиції, а не з початку файлу.

Якщо src і dst представляють собою один і той же файл, виняток shutil.SameFileError.

Якщо dst існує, то він буде перезаписаний.

Директорія dst не повинна існувати. Вона буде створена, разом з пропущеними батьківськими директоріями.

Якщо False (за замовчуванням), будуть скопійовані вміст і метадані файлів, на які вказували посилання.

Можна встановити прапор ignore_dangling_symlinks = True. щоб приховати цю помилку.

shutil.rmtree (path, ignore_errors = False, onerror = None) - Видаляє поточну директорію і все піддиректорії; path повинен вказувати на директорію, а не на символічне посилання.

Якщо ignore_errors = True. то помилки, що виникають в результаті невдалого видалення, будуть проігноровані. Якщо False (за замовчуванням), ці помилки будуть передаватися оброблювачу onerror. або, коли його немає, то виняток.

На ОЗ, які підтримують функції на основі файлових дескрипторів, за замовчуванням використовується версія rmtree (). НЕ вразлива до атак на символічні посилання.

Щоб перевірити, вразлива система до подібних атак, можна використовувати атрибут rmtree.avoids_symlink_attacks.

Якщо заданий onerror. це повинна бути функція з 3 параметрами: function. path. excinfo.

Перший параметр, function. це функція, яка створила виключення; вона залежить від платформи і інтерпретатора. Другий параметр, path. це шлях, що передається функції. Третій параметр, excinfo - це інформація про виключення, яка повертається sys.exc_info (). Винятки, викликані onerror. не обробляються.

Якщо dst - існуюча директорія, то src переміщається всередину директорії. Якщо dst існує, але не директорія, то воно може бути перезаписано.

shutil.disk_usage (path) - повертає статистику використання дискового простору як namedtuple з арібутамі total, used і free, в байтах.

shutil.chown (path, user = None, group = None) - змінює господаря і / або групу у файлу або директорії.

shutil.which (cmd, mode = os.F_OK | os.X_OK, path = None) - повертає шлях до виконуваного файлу по заданій команді. Якщо немає відповідності ні з одним файлом, то None. mode це права доступу, що вимагаються від файлу, за замовчуванням шукає тільки виконувані.

Високорівневі функції для створення і читання архівуються і стислих файлів. Засновані на функціях з модулів zipfile і tarfile.

shutil.make_archive (base_name, format [, root_dir [, base_dir [, verbose [, dry_run [, owner [, group [, logger]]]]]]]) - створює архів і повертає його ім'я.

base_name це ім'я файлу для створення, включаючи шлях, але не включаючи розширення (не потрібно писати ».zip" і т.д.).

format - формат архіву.

root_dir - директорія (щодо поточної), яку ми архівуємо.

base_dir - директорія, в яку буде архівувати (тобто всі файли в архіві будуть в цій папці).

Якщо dry_run = True. архів не буде створено, але операції, які повинні були бути виконані, запишуться в logger.

owner і group використовуються при створенні tar-архіву.

shutil.get_archive_formats () - список доступних форматів для архівування.

shutil.unpack_archive (filename [, extract_dir [, format]]) - розпаковує архів. filename - повний шлях до архіву.

extract_dir - то, куди буде вилучатись вміст (за замовчуванням в поточну).

format - формат архіву (за замовчуванням намагається вгадати по розширенню файлу).

shutil.get_unpack_formats () - список доступних форматів для розархівування.

Запит розміру терміналу виведення

shutil.get_terminal_size (fallback = (columns, lines)) - повертає розмір вікна терміналу.

fallback повернеться, якщо неможливо дізнатися розмір терміналу (термінал не підтримує такі запити, або програма працює без терміналу). За замовчуванням (80, 24).