• ru
  • Language: en
  • Documentation version: latest

Модуль os

Модуль os позволяет работать с файловой системой, с окружением, управлять процессами.

В этом подразделе рассматриваются лишь несколько полезных возможностей. За более полным описанием возможностей модуля можно обратиться к документации или статье на сайте PyMOTW.

Модуль os позволяет создавать каталоги:

In [1]: import os

In [2]: os.mkdir('test')

In [3]: ls -ls
total 0
0 drwxr-xr-x  2 nata  nata  68 Jan 23 18:58 test/

Кроме того, в модуле есть соответствующие проверки на существование. Например, если попробовать повторно создать каталог, возникнет ошибка:

In [4]: os.mkdir('test')
---------------------------------------------------------------------------
FileExistsError                           Traceback (most recent call last)
<ipython-input-4-cbf3b897c095> in <module>()
----> 1 os.mkdir('test')

FileExistsError: [Errno 17] File exists: 'test'

В таком случае пригодится проверка os.path.exists:

In [5]: os.path.exists('test')
Out[5]: True

In [6]: if not os.path.exists('test'):
   ...:     os.mkdir('test')
   ...:

Метод listdir позволяет посмотреть содержимое каталога:

In [7]: os.listdir('.')
Out[7]: ['cover3.png', 'dir2', 'dir3', 'README.txt', 'test']

С помощью проверок os.path.isdir и os.path.isfile можно получить отдельно список файлов и список каталогов:

In [8]: dirs = [ d for d in os.listdir('.') if os.path.isdir(d)]

In [9]: dirs
Out[9]: ['dir2', 'dir3', 'test']

In [10]: files = [ f for f in os.listdir('.') if os.path.isfile(f)]

In [11]: files
Out[11]: ['cover3.png', 'README.txt']

Также в модуле есть отдельные методы для работы с путями:

In [12]: file = 'Programming/PyNEng/book/25_additional_info/README.md'

In [13]: os.path.basename(file)
Out[13]: 'README.md'

In [14]: os.path.dirname(file)
Out[14]: 'Programming/PyNEng/book/25_additional_info'

In [15]: os.path.split(file)
Out[15]: ('Programming/PyNEng/book/25_additional_info', 'README.md')