Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛЕКЦИЯ 7

.pdf
Скачиваний:
13
Добавлен:
26.03.2016
Размер:
1.84 Mб
Скачать

Лекция 7. Работа с библиотеками. Обзор стандартной библиотеки Pyhton. Работа с текстовыми и бинарными файлами.

1.Архитектура программы на языке Python.

2.Модули.

2.1.Как работает import.

2.2.Путь поиска модулей.

2.3.Способы импортирования. 3.Стандартная̆библиотека.

3.1. Краткий обзор. 4.Файлы.

4.1. Операции. 4.2.Примеры.

4.3.Другие инструменты, напоминающие файлы.

1.Архитектура программы на языке Python

Главный файл (или сценарий) определяет, как будет двигаться основной поток выполнения программы, – это тот файл, который необходимо запустить, чтобы начать работу приложения. Файлы модулей – это библиотеки инструментальных средств, где содержатся компоненты, используемые главным файлом (и другими модулями).

ПРИМЕР. b. py определяет функцию spam: def spam(text): print(text, ‘spam’) a.py использует функцию spam: import b

b.spam(‘gumby’) результат: gumby spam

2.Модули.

Повторное использование программного кода.

Модули позволяют сохранять программный код в виде файлов. Его можно повторно загружать и запускать столько раз, сколько потребуется. Модули – это место, где определяются имена, известные как атрибуты, на которые могут ссылаться внешние программы.

Разделение системы пространств имен.

Модули в языке Python являются самой высокоуровневой единицей организации программ. По существу, они – всего лишь пакеты имен. Модули позволяют позволяют избежать конфликтов имен – вы никогда не увидите имя в другом файле, если не импортируете его. Вследствие этого модули являются естественными инструментами группировки компонентов системы.

Реализация служб или данных для совместного пользования.

С функциональной точки зрения модули могут также использоваться для реализации компонентов, используемых системой, вследствие чего требуется только одна копия такого компонента. Например, если необходим глобальный объект, который используется более чем одной функцией или модулем, можно написать его в виде модуля, который затем может импортироваться множеством клиентов.

2.1. Как работает import.

Когда модуль впервые импортируется во время выполнения программы (т. е. модуль отсутствует в словаре загруженных модулей sys.modules):

1) Отыскивает файл модуля.

Интерпретатор использует стандартный путь поиска модулеи ̆.

2) Компилирует в байт-код (если это необходимо).

Интерпретатор проверяет время создания файла и пропускает этап компиляции исходного программного кода, если файл с байт-кодом .pyc не старше, чем соответствующий ему файл .py с исходным текстом.

3) Запускает программный код модуля, чтобы создать объекты, которые он определяет.

Все инструкции в файле модуля выполняются по порядку, сверху вниз, и любые операции присваивания, которые встретятся на этом шаге, будут создавать атрибуты конечного объекта модуля.

Если потребуется еще раз импортировать файл, который уже был загружен (например, чтобы обеспечить поддержку настроек, выполняемых пользователем), воспользуйтесь функцией imp.reload.

Перечень загруженных модулей можно получить с помощью команды list(sys.modules.keys()).

2.2. Путь поиска модулей.

Интерпретатор выполняет поиск в следующих местах в указанном порядке: 1. Домашний каталог программы.

Это каталог, где находится главный файл программы. При работе в интерактивном сеансе - это текущий рабочий каталог (т. е. каталог, откуда была запущена интерактивная оболочка).

2. Содержимое переменной окружения PYTHONPATH (если таковая определена).

Например, в Windows можно воспользоваться ярлыком Система (System) в панели управления, чтобы записать в PYTHONPATH список каталогов, разделенных точкой с запятой: c:\pycode\utilities;d:\pycode\package1

3.Каталоги стандартнои библиотекй .

4.Содержимое любых файлов с расширением .pht (если таковые имеются).

Текстовый файл со списком каталогов помещается в соответствующий каталог (например, для Windows — C:\Python30\myconfig.pth или C:\Python30\Lib\site-packages\myconfig.pth). Создавать файлы .pth и определять местоположение библиотек языка Python позволяет модуль site стандартной библиотеки.

Объединение этих четырех компонентов составляет sys.path – список строк с именами каталогов:

>>>import sys

>>>sys.path

[‘’, ‘C:\\users’, ‘C:\\Windows\\system32\\python30.zip’, ‘c:\\Python30\\DLLs’, ‘c:\\Python30\\lib’, ‘c:\\Python30\\lib\\plat-win’, ‘c:\\Python30’, ‘C:\\Users\\Mark’, ‘c:\\Python30\\lib\\site-packages’]

2.3. Способы импортирования.

#Можно импортировать модуль:

>>> import random

>>> random.random()

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

>>> from random import * # можно случайно функции переопределить )

>>> random()

#При импортировании модуля его можно "переименовать":

>>> import random as rnd

>>> rnd.random() # При импортировании имён из модулей в текущей области видимости

>>> rnd is random # создаются ссылки на объекты из импортируемых модулей, копирования не происходит

True

#Можно импортировать только некоторые имена:

from random import choice

>>> choice(['a', 'b', 'c', 'd'])

#Можно импортировать имя из модуля, и переименовать его:

>>> from random import uniform as unf

>>> unf(-3, 3)

#Можно импортировать несколько модулей в одной команде (не рекомендуется):

>>> import random, os, sys

>>> sys.platform 'linux'

#Можно импортировать несколько имён из модуля:

>>> from random import gammavariate as G, choice, uniform as unf

3. Стандартная̆библиотека.

Интерпретатор Python поставляется с обширной коллекцией дополнительных модулей, которая известна как стандартная библиотека. Эта коллекция насчитывает порядка 200 крупных модулей и содержит платформонезависимую поддержку распространенных задач программирования.

https://ru.wikipedia.org/wiki/Стандартная_библиотека_Python http://pep8.ru/doc/tutorial-3.1/10.html

Работа со строками

Работа с двоичными данными

Структуры данных

Математические функции и типы

Объекты для функционального программирования

Работа с файлами и директориями

Сериализация и сохранение данных, БД

Сжатие данных и работа с архивами

Работа с файлами определённых типов

Криптографические функции

Работа с ОС

Параллельное выполнение кода

Межпроцессорное взаимодействие

Работа с типами Internet

Работа с HTML/XML

Интернет протоколы

Мультимедиа

Интернационализация

Фреймворки для программ

Графический интерфейс с помощью Tk

Средства для разработки

Средства отладки и профилирования

3. Стандартная̆библиотека.

The Python Standard Library (https://docs.python.org/3/library/index.html)

3.1.Краткий обзор.

Взаимодействие с операционной системой

>>> import os

>>> os.getcwd() # возвращает путь к текущему каталогу

'C:\\Python31'

>>>os.system('dir *.txt') # выполнить указанную команду ОС

...список текстовых файлов, выведенных командой...

0

>>>os.chdir('/server/accesslogs') # сменить текущий каталог

В интерактивном режиме встроенные функции dir() и help() помогут разобраться с большими модулями вроде os:

>>>import os

>>>dir(os)

...список всех атрибутов модуля...

>>> help(os)

...страница руководства по модулю на основе строк документации...

Для управления файлами и каталогами удобный высокоуровневый интерфейс предоставляет модуль shutil:

>>> import shutil

>>> shutil.copyfile('data.db', 'archive.db') # копировать файл

>>> shutil.move('/build/executables', 'installdir') # переместить каталог

3.1.Краткий обзор.

Wildcard-шаблоны для имён файлов

>>>import glob

>>>glob.glob('*.py')

['primes.py', 'random.py', 'quote.py']

Аргументы командной строки

Аргументы командной строки хранятся в атрибуте argv модуля sys в виде списка. Например, при запуске python demo.py one two three в командной строке шелла для сценария demo.py:

import sys print(sys.argv)

будет выведено ['demo.py', 'one', 'two', 'three'].

Стандартный вывод. Завершение сценария.

Модуль sys имеет атрибуты stdin, stdout и stderr (для стандартного ввода, вывода и вывода ошибок соответственно). Последний может быть полезен для вывода предупреждений и сообщений об ошибках когда стандартный вывод перенаправлен:

>>> sys.stderr.write ('Внимание! Файл журнала не найден.\n') Внимание! Файл журнала не найден.

34

Для завершения сценария можно использовать sys.exit().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]