Исследование области системного программирования мы начнем с краткого обзора модулей sys и os из стандартной библиотеки, а затем перейдем к более важным понятиям системного программирования. Из перечня атрибутов этих модулей можно заключить, что это очень крупные модули, — следующий пример интерактивного сеанса был получен в Python 3.1 и в Windows 7 вне среды IDLE:
C:\…\PP4E\System> python
Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (…)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import sys, os |
>>> len(dir(sys)) # 65 атрибутов |
65 |
>>> len(dir(os)) # в Windows 122 атрибута, в Unix — больше |
122 |
>>> len(dir(os.path)) # модуль, вложенный в os |
52 |
Содержимое этих двух модулей может отличаться для разных версий Python и платформ. Например, модуль os имеет намного больший размер после сборки Python 3.1 из исходных текстов под Cygwin (Cygwin — система, обеспечивающая Unix-подобную функциональность в Windows; о ней рассказывается во врезке «Подробнее о Cygwin Python для Windows» в главе 5):
$ ./python.exe
Python 3.1.1 (r311:74480, Feb 20 2010, 10:16:52)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type “help”, “copyright”, “credits” or “license” for more information.
> >> import sys, os
> >> len(dir(sys))
64
> >> len(dir(os))
217
> >> len(dir(os.path))
51
Я не собираюсь представлять все элементы в каждом встроенном модуле, поэтому прежде всего я хочу показать, как самостоятельно получать более подробную информацию. Такая задача может служить формальным оправданием тому, что здесь будут представлены некоторые базовые понятия системного программирования. Попутно мы напишем код первого сценария для форматирования документации.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011