Python LanguageМодуль os

Вступление

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

Синтаксис

  • import os

параметры

параметр подробности
Дорожка Путь к файлу. Сепаратор пути может быть определен os.path.sep .
Режим Желаемое разрешение в восьмеричном (например, 0700 )

Создать каталог

os.mkdir('newdir')

Если вам нужно указать разрешения, вы можете использовать необязательный аргумент mode :

os.mkdir('newdir', mode=0700)

Получить текущий каталог

Используйте os.getcwd() :

print(os.getcwd())

Определите имя операционной системы

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

os.name

В Python 3 это может вернуть одно из следующих:

  • posix
  • nt
  • ce
  • java

Более подробную информацию можно получить из sys.platform

Удалить каталог

Удалите каталог по path :

os.rmdir(path)

Вы не должны использовать os.remove() для удаления каталога. Эта функция предназначена для файлов, и использование ее в каталогах приведет к OSError

Следуйте символической ссылке (POSIX)

Иногда вам нужно определить цель символической ссылки. os.readlink сделает следующее:

print(os.readlink(path_to_symlink))

Изменение разрешений на файл

os.chmod(path, mode)

где mode - это требуемое разрешение, в восьмеричном.

makedirs - создание рекурсивного каталога

Для локального каталога со следующим содержимым:

 └── dir1
     ├── subdir1
     └── subdir2

Мы хотим создать тот же subdir1, subdir2 под новым каталогом dir2, который еще не существует.

import os

os.makedirs("./dir2/subdir1")
os.makedirs("./dir2/subdir2")

Выполнение этого результата

├── dir1
│   ├── subdir1
│   └── subdir2
└── dir2
    ├── subdir1
    └── subdir2

dir2 создается только в первый раз, когда это необходимо, для создания subdir1.

Если бы мы использовали os.mkdir вместо этого, у нас было бы исключение, потому что dir2 еще не существовало бы.

    os.mkdir("./dir2/subdir1")
OSError: [Errno 2] No such file or directory: './dir2/subdir1'

os.makedirs не понравится, если целевой каталог уже существует. Если мы снова запустим его:

OSError: [Errno 17] File exists: './dir2/subdir1'

Однако это можно легко устранить, поймав исключение и проверив, что каталог создан.

try:
    os.makedirs("./dir2/subdir1")
except OSError:
    if not os.path.isdir("./dir2/subdir1"):
        raise

try:
    os.makedirs("./dir2/subdir2")
except OSError:
    if not os.path.isdir("./dir2/subdir2"):
        raise