Вы находитесь на странице: 1из 18

Методические указания по выполнению заданий:

 ввод путей к директориям или файлам в задании осуществляется с


клавиатуры, если иного не указано в тексте задания
 вывод результатов работы программы осуществляется в файл out.txt
в директорию по вашему усмотрению, если иного (путь к директории,
другое имя файла) не указано в задании
 должна быть написана функция usage, которая будет выводить
правильный формат вызова при открытии вашей программы с
аргументом -h или при неправильном формате вызова

*для демонстрации использовалась стандартная IDLE


 ваша программа должна осуществлять проверку кол-ва вводимых
аргументов командной строки, а также существование директории или
файлов, которые указаны в задании, если были введены некорректные
данные — должна быть вызвана функция usage
Обратите внимание на стандартные функции языка python:
os.path.isfile
os.path.exists
 для проверки корректности работы вашей программы разработайте
несколько тестовых примеров, которые будут охватывать различные
входные параметры, при необходимости ваша программа будет
протестирована на тестовых примерах преподавателя
Варианты заданий:
__________________________________________________________________
1. Рекурсивный проход по всем каталогам в заданной директории, вывод
всех файлов в директории с расширением .txt отсортированный по
времени изменения файла
2. Рекурсивный проход по всем каталогам в заданной директории, вывод
всех путей к каждому файлу отсортированный по длине строки и во
вторую очередь по времени создания файла
3. В некоторой директории (любая пользовательская директория) есть
файлы с расширением .tasks, кодировка utf8, открыть файлы в режиме
чтения, в файлах гарантированно встречаются строки вида:
«некоторый текст»//TODO: задача
Вывести список всех задач, упорядочить по алфавиту
4. Рекурсивный проход по всем каталогам в заданной директории, вывод
всех файлов в директории, скопировать все непустые файлы в названии
которых встречается "the" и которые заканчиваются на nd(расширение
не учитывать)в данный каталог (каталог вводится с клавиатуры),
вывести список файлов, которые были скопированы
5. Рекурсивный проход по всем каталогам в заданной директории, удалить
все файлы из директории, созданные или измененные сегодня, в
названии которых встречается del, вывести список удаленных файлов
6. Задана директория, удалить все файлы из поддиректорий c уровнем
вложенности с 2 до 5 расширением *.txt , в которых не встречается
not_del, вывести список удаленных файлов
7. Дан файл task7.txt кодировка utf8 в нем есть строки типа
ref="ссылка"(отдельная строка, то есть до ref в строке нет символов, а
после ссылки идет перевод строки), ссылка является путем к другому
файлу, открыть файлы, записать в них номер строки (через пробел) на
котором находилась ссылка в 1м файле.
8. Рекурсивный проход по всем каталогам в заданной директории, найти
файлы все скрытые файлы с расширением .doc с уровнем вложенности
папок от 2 до 4, вывести список файлов отсортированный по алфавиту
9. Произвести подсчет занимаемого файлового пространства указанной
директории, включая подкаталоги, предоставляя возможность задать
маску требуемых файлов в стандартном виде (abc*.mp?), cимвол ?
означает 1 символ, * — любое число символов, исключая точку.
Вывести общее дисковое пространство, занимаемое директорией.
10.Выполнить сравнение двух указанных файлов и вывести результаты
построчно с возможностью выбора вида отображения (только различия,
только общее, смешанный — задается с помощью аргументов
командной строки). Вывести результаты сравнения.
11.Произвести сканирование списка процессов, вывод всей доступной
информации о системных процессах отсортированной по имени
процесса в формате
название_процесса: информация о процессе

12. Вывести список файлов в заданной директории с атрибутами


(скрытые, системные, архивные, только для чтения и др.) в виде
«имя_файла» : «список атрибутов»
Например: test1.txt : архивный скрытый
13.Удалять в файлы в данной директории, если удаляемый файл был
последним в директории, то нужно удалить пустую папку, не удалять
файлы в названии которых есть «mark». Вывести пути всех удаленных
файлов.
Путь — полный путь к файлу (C:\dir1\..\file.txt)
14.Задана директория, отобразить ее полную структуру, включая все ее
подкаталоги в виде древовидной структуры:
Пример вывода в out.txt:
dir1
—dir2
——file1.doc
——file2.txt
—dir3
——file3.exe
——file4.txt
—file5.docx
—file6.odt

15.По структуре дерева (задание 14) восстановить файлы (без их


содержания) и структуру вложенности папок. Дерево хранится в файле
task15.txt, папка для восстановления задается вручную пользователем.
16.Получить список запущенных процессов, отобразить его, убить
процессы с заданной маской (abc*.mp?). Символ ? означает 1 символ, *
— любое число символов, исключая точку.
17.Запустить процесс(путь к процессу задается пользователем), вывести
всю доступную информацию о процессе и убить его через 20 сек.
Отсчет таймера отображать на экране, убедиться что процесс
действительно был убит.
18.Заархивировать все содержимое папки с заданной маской (abc*.mp?),
исключая саму директорию. Символ ? означает 1 символ, * — любое
число символов, исключая точку. Вывести список заархивированных
файлов и путь к архиву.
19. Для всех файлов в данной директории посимвольным считыванием
файла определить, является он символьным или бинарным, вывести
общую (для всех файлов) статистику (наиболее часто используемые
символы).
20.Вывести список логических дисков, их общий объем и объем
свободного пространства. Определить, доступен ли диск для записи.
21.Для всех файлов заданного каталога добавить атрибут "скрытый", если
файл только для чтения и сбросить атрибут "архивный" в обратном
случае. Вывести произведенные изменения (путь к файлу и какие
атрибуты были изменены)
22. Написать программу, подсчитывающую размер выбранного каталога
на диске. Вывести информацию о количестве папок, файлов и их
атрибуты. Количество скрытых файлов, для чтения и т.д.
23.Вывести значения ключей реестра из %foldername%, включая
подпапки. Путь к папке в реестре хранится в файле task23.txt. Значения
ключей по умолчанию игнорируются.
24.Восстановить значения ключей реестра, все значения и пути хранятся в
текстовом файле task24.txt. Строки представлены в виде:
название_папки название_переменной тип_переменной значение
25.Поиск значения ключа в реестре с заданной маской (abc*mp?).
Символ ? означает 1 символ, * — любое число символов, исключая
точку. Вывести все найденные ключи в формате «путь_до_ключа
имя_ключа»
26.Просчитать/найти использование дискового пространства на
компьютере, выслать результат вычисления на почту (например, свою).
27.Послать ping-запрос ко всем 3 различным ресурсам (выбираются на
усмотрение пользователя), результат запроса вывести в консоль.
28. В папке с файлами найти изображения (изображения одноцветные, все
пиксели изображения имеют один и тотже RGB), чьи значения RGB в
сумме дают значение <400, вывести их полный путь и эти значения.
(Например, R=150, G=150, B=99 — выведет).
29.Вводится имя файла-изображения, изменить его яркость, добавить
шумов, сохранить измененное изображение в папке с исходником.
Значения для изменения яркости и добавления шумов выбрать
самостоятельно, вывести их на экран.
30.Для каждого файла из директории посчитайте его md5-хеш. Выведите
все пары (ИМЯ_ФАЙЛА, ХЕШ). Порядок файлов неважен.
Базовые сведения о языке Python 3.6
Python – это объектно-ориентированный, интерпретируемый, язык высокого
уровня.
Ссылка на скачивание:https://www.python.org/

Для работы с языком можно использовать стандартно поставляемую IDLE


(предоставляется сразу после установки). Для более удобной разработки
можно использовать полноценную IDE, например PyCharm от компании
Jetbrains
Возможности языка Python:
 Работа с xml/html файлами
 Работа с http запросами
 GUI (графический интерфейс)
 Создание веб-сценариев
 Работа с FTP
 Работа с изображениями, аудио и видео файлами
и др.
Подробная документация: https://docs.python.org/3.6/library/index.html
Далее приводится небольшая документация для быстрого включения в
процесс разработки на языке python
Синтаксис
 Конец строки является концом инструкции (точка с запятой не
требуется).
 Вложенные инструкции объединяются в блоки по величине отступов.
Отступ может быть любым, главное, чтобы в пределах одного
вложенного блока отступ был одинаков. Отступ в 1 пробел-не лучшее
решение. Используйте 4 пробела или знак табуляции.
 Вложенные инструкции в Python записываются в соответствии с одним
и тем же шаблоном, когда основная инструкция завершается
двоеточием, вслед за которым располагается вложенный блок кода,
обычно с отступом под строкой основной инструкции.

Типизация
Язык Python имеет динамическую типизацию, то есть объявление типа
данных происходит автоматически при присвоении значения переменной.
Для присвоения значений используется оператор «=»
Например(для демонстрации используется стандартная IDLE):
 Задается строка

 Задается число типа float

Проверим так ли это на самом деле:

Ключевые конструкции
1) Условный оператор if
Перейдем сразу к примеру:
Создается целочисленная переменная number, инициализируется случайным
значением в пределах от 1 до 324, в зависимости от значение выводится
сообщение.
2) Операторы циклов while/for
 Пример использования оператора for (аналогично языкам c++/java).
Переменная i последовательно принимает значения от 0 до 9

 Пример использования оператора for (аналогично оператору foreach в


языке c++). Переменная ch последовательно принимает значения
символов строки str
 Пример использования while(аналогично языкам с++/java)

Встроенные типы данных


1) Список — упорядоченная изменяемая коллекция объектов произвольных
типов (почти как массив, но типы могут отличаться)
Способы создания списка:
 С помощью литерала (квадратные скобки)
задается пустой список

для инициализации используется генератор внутри квадратных скобок

 С помощью функции list() задается пустой список

для инициализации используется любой объект, по которому можно


итерироваться

Добавление нового элемента в список (тип элемента может отличаться):


Удаление элемента из списка

Методы списка:
 list.append(x) - добавляет элемент в конец списка
 list.extend(L) - расширяет список list, добавляя в конец все элементы
списка L
 list.insert(i, x) - вставляет на i-ый элемент значение x
 list.remove(x) - удаляет первый элемент в списке, имеющий значение x.
ValueError, если такого элемента не существует
 list.pop([i]) - удаляет i-ый элемент и возвращает его. Если индекс не
указан, удаляется последний элемент
 list.index(x, [start [, end]]) - возвращает положение первого элемента со
значением x (при этом поиск ведется от start до end)
 list.count(x) - возвращает количество элементов со значением x
 list.sort([key=функция]) - сортирует список на основе функции
 list.reverse() - разворачивает список
 list.copy() - поверхностная копия списка
 list.clear() - очищает список
2) Кортеж (tuple) - это неизменяемая коллекция объектов.
Способы создания кортежа:
 С помощью литерала (круглые скобки)
Создается пустой кортеж
Инициализируем кортеж некоторыми значениями

 С помощью функции tuple()


Создается пустой кортеж

Используем генератор для создания кортежа

Отличия кортежа от списка:


 Кортеж защищен от изменений после создания
 Меньший размер
 Возможность использовать кортежи в качестве ключей словаря

Методы кортежа — все методы списка, которые не изменяют его (например:


count(), index())
3) Словарь — неупорядоченные коллекции произвольных объектов с
доступом по ключу.
Способы создания словаря:
 С помощью литерала (фигурные скобки)
Создание пустого словаря
Инициализация словаря парами ключ:значение

Использование генератора

 С помощью функции dict()


Создание пустого словаря

Инициализация словаря парами ключ: значение

Методы словаря:
dict.clear() - очищает словарь.
dict.copy() - возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) - создает словарь с ключами из seq и
значением value (по умолчанию None).
dict.get(key[, default]) - возвращает значение ключа, но если его нет, не
бросает исключение, а возвращает default (по умолчанию None).
dict.items() - возвращает пары (ключ, значение).
dict.keys() - возвращает ключи в словаре.
dict.pop(key[, default]) - удаляет ключ и возвращает значение. Если ключа нет,
возвращает default (по умолчанию бросает исключение).
dict.popitem() - удаляет и возвращает пару (ключ, значение). Если словарь
пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) - возвращает значение ключа, но если его нет, не
бросает исключение, а создает ключ с значением default (по умолчанию
None).
dict.update([other]) - обновляет словарь, добавляя пары (ключ, значение) из
other. Существующие ключи перезаписываются. Возвращает None (не новый
словарь!).
dict.values() - возвращает значения в словаре.
4) Числа (int, float, complex)
Объявление и инициализация переменных

Так же можно создать и явно, в основном используется для приведения


типов

Список операций:
5)Строки
Способы создания с помощью литералов:
 Строка в кавычках“

 Строка в апострофах

 Raw («сырая») строка (экранирование подавляется)


 Строка в тройных кавычках или апострофах (запись многострочных
блоков текста)

Список управляющих(escape)-последовательностей:

Методы строк:
Функция или метод Назначение

S = "s\np\ta\nbbb" Экранированные последовательности

S = r"C:\temp\new" Неформатированные строки (подавляют


экранирование)

S = b"byte" Строка байтов

S1 + S2 Конкатенация (сложение строк)

S1 * 3 Повторение строки
Функция или метод Назначение

S[i] Обращение по индексу

S[i:j:step] Извлечение среза

len(S) Длина строки

S.find(str, [start],[end]) Поиск подстроки в строке. Возвращает номер


первого вхождения или -1

S.rfind(str, [start],[end]) Поиск подстроки в строке. Возвращает номер


последнего вхождения или -1

S.index(str, [start],[end]) Поиск подстроки в строке. Возвращает номер


первого вхождения или вызывает ValueError

S.rindex(str, [start],[end]) Поиск подстроки в строке. Возвращает номер


последнего вхождения или вызывает ValueError

S.replace(шаблон, Замена шаблона


замена)

S.split(символ) Разбиение строки по разделителю

S.isdigit() Состоит ли строка из цифр

S.isalpha() Состоит ли строка из букв

S.isalnum() Состоит ли строка из цифр или букв

S.islower() Состоит ли строка из символов в нижнем регистре

S.isupper() Состоит ли строка из символов в верхнем регистре

S.isspace() Состоит ли строка из неотображаемых символов


(пробел, символ перевода страницы ('\f'), "новая
строка" ('\n'), "перевод каретки" ('\r'),
"горизонтальная табуляция" ('\t') и "вертикальная
табуляция" ('\v'))

S.istitle() Начинаются ли слова в строке с заглавной буквы

S.upper() Преобразование строки к верхнему регистру


Функция или метод Назначение

S.lower() Преобразование строки к нижнему регистру

S.startswith(str) Начинается ли строка S с шаблона str

S.endswith(str) Заканчивается ли строка S шаблоном str

S.join(список) Сборка строки из списка с разделителем S

ord(символ) Символ в его код ASCII

chr(число) Код ASCII в символ

S.capitalize() Переводит первый символ строки в верхний


регистр, а все остальные в нижний

S.center(width, [fill]) Возвращает отцентрованную строку, по краям


которой стоит символ fill (пробел по умолчанию)

S.count(str, [start],[end]) Возвращает количество непересекающихся


вхождений подстроки в диапазоне [начало, конец]
(0 и длина строки по умолчанию)

S.expandtabs([tabsize]) Возвращает копию строки, в которой все символы


табуляции заменяются одним или несколькими
пробелами, в зависимости от текущего столбца.
Если TabSize не указан, размер табуляции
полагается равным 8 пробелам

S.lstrip([chars]) Удаление пробельных символов в начале строки

S.rstrip([chars]) Удаление пробельных символов в конце строки

S.strip([chars]) Удаление пробельных символов в начале и в конце


строки

S.partition(шаблон) Возвращает кортеж, содержащий часть перед


первым шаблоном, сам шаблон, и часть после
шаблона. Если шаблон не найден, возвращается
кортеж, содержащий саму строку, а затем две
пустых строки

S.rpartition(sep) Возвращает кортеж, содержащий часть перед


последним шаблоном, сам шаблон, и часть после
Функция или метод Назначение

шаблона. Если шаблон не найден, возвращается


кортеж, содержащий две пустых строки, а затем
саму строку

S.swapcase() Переводит символы нижнего регистра в верхний, а


верхнего – в нижний

S.title() Первую букву каждого слова переводит в верхний


регистр, а все остальные в нижний

S.zfill(width) Делает длину строки не меньшей width, по


необходимости заполняя первые символы нулями

S.ljust(width, fillchar=" ") Делает длину строки не меньшей width, по


необходимости заполняя последние символы
символом fillchar

S.rjust(width, fillchar=" Делает длину строки не меньшей width, по


") необходимости заполняя первые символы символом
fillchar

Некоторые библиотеки языка Python


 sys - обеспечивает доступ к некоторым переменным и функциям,
взаимодействующим с интерпретатором python (аргументы командной
строки, путь установки python, версия python, информация о системе и
многое другое)
 re — библиотека для работы с регулярными выражениями
 pil — библиотека для работы с изображениями

Вам также может понравиться