Как сделать операционную систему на python
Перейти к содержимому

Как сделать операционную систему на python

  • автор:

Как сделать операционную систему на python

Ряд возможностей по работе с каталогами и файлами предоставляет встроенный модуль os . Хотя он содержит много функций, рассмотрим только основные из них:

  • mkdir() : создает новую папку
  • rmdir() : удаляет папку
  • rename() : переименовывает файл
  • remove() : удаляет файл

Создание и удаление папки

Для создания папки применяется функция mkdir() , в которую передается путь к создаваемой папке:

import os # путь относительно текущего скрипта os.mkdir("hello") # абсолютный путь os.mkdir("c://somedir") os.mkdir("c://somedir/hello")

Для удаления папки используется функция rmdir() , в которую передается путь к удаляемой папке:

import os # путь относительно текущего скрипта os.rmdir("hello") # абсолютный путь os.rmdir("c://somedir/hello")

Переименование файла

Для переименования вызывается функция rename(source, target) , первый параметр которой — путь к исходному файлу, а второй — новое имя файла. В качестве путей могут использоваться как абсолютные, так и относительные. Например, пусть в папке C://SomeDir/ располагается файл somefile.txt . Переименуем его в файл «hello.txt»:

import os os.rename("C://SomeDir/somefile.txt", "C://SomeDir/hello.txt")

Удаление файла

Для удаления вызывается функция remove() , в которую передается путь к файлу:

import os os.remove("C://SomeDir/hello.txt")

Существование файла

Если мы попытаемся открыть файл, который не существует, то Python выбросит исключение FileNotFoundError. Для отлова исключения мы можем использовать конструкцию try. except. Однако можно уже до открытия файла проверить, существует ли он или нет с помощью метода os.path.exists(path) . В этот метод передается путь, который необходимо проверить:

filename = input("Введите путь к файлу: ") if os.path.exists(filename): print("Указанный файл существует") else: print("Файл не существует")

Модуль os

Python 3 логотип

Модуль os предоставляет множество функций для работы с операционной системой, причём их поведение, как правило, не зависит от ОС, поэтому программы остаются переносимыми. Здесь будут приведены наиболее часто используемые из них.

Будьте внимательны: некоторые функции из этого модуля поддерживаются не всеми ОС.

os.name — имя операционной системы. Доступные варианты: ‘posix’, ‘nt’, ‘mac’, ‘os2’, ‘ce’, ‘java’.

os.environ — словарь переменных окружения. Изменяемый (можно добавлять и удалять переменные окружения).

os.getlogin() — имя пользователя, вошедшего в терминал (Unix).

os.getpid() — текущий id процесса.

os.uname() — информация об ОС. возвращает объект с атрибутами: sysname — имя операционной системы, nodename — имя машины в сети (определяется реализацией), release — релиз, version — версия, machine — идентификатор машины.

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) — проверка доступа к объекту у текущего пользователя. Флаги: os.F_OK — объект существует, os.R_OK — доступен на чтение, os.W_OK — доступен на запись, os.X_OK — доступен на исполнение.

os.chdir(path) — смена текущей директории.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) — смена прав доступа к объекту (mode — восьмеричное число).

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True) — меняет id владельца и группы (Unix).

os.getcwd() — текущая рабочая директория.

os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) — создаёт жёсткую ссылку.

os.listdir(path=».») — список файлов и директорий в папке.

os.mkdir(path, mode=0o777, *, dir_fd=None) — создаёт директорию. OSError, если директория существует.

os.makedirs(path, mode=0o777, exist_ok=False) — создаёт директорию, создавая при этом промежуточные директории.

os.remove(path, *, dir_fd=None) — удаляет путь к файлу.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — переименовывает файл или директорию из src в dst.

os.renames(old, new) — переименовывает old в new, создавая промежуточные директории.

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — переименовывает из src в dst с принудительной заменой.

os.rmdir(path, *, dir_fd=None) — удаляет пустую директорию.

os.removedirs(path) — удаляет директорию, затем пытается удалить родительские директории, и удаляет их рекурсивно, пока они пусты.

os.symlink(source, link_name, target_is_directory=False, *, dir_fd=None) — создаёт символическую ссылку на объект.

os.sync() — записывает все данные на диск (Unix).

os.truncate(path, length) — обрезает файл до длины length.

os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) — модификация времени последнего доступа и изменения файла. Либо times — кортеж (время доступа в секундах, время изменения в секундах), либо ns — кортеж (время доступа в наносекундах, время изменения в наносекундах).

os.walk(top, topdown=True, onerror=None, followlinks=False) — генерация имён файлов в дереве каталогов, сверху вниз (если topdown равен True), либо снизу вверх (если False). Для каждого каталога функция walk возвращает кортеж (путь к каталогу, список каталогов, список файлов).

os.system(command) — исполняет системную команду, возвращает код её завершения (в случае успеха 0).

os.urandom(n) — n случайных байт. Возможно использование этой функции в криптографических целях.

os.path — модуль, реализующий некоторые полезные функции на работы с путями.

Для вставки кода на Python в комментарий заключайте его в теги

Как создать свою операционную систему с нуля

Обложка поста Как создать свою операционную систему с нуля

Книга «Операционная система с 0 до 1» опубликована на GitHub и имеет более 2 000 звездочек и 100 форков. Как понятно из названия, прочитав её, вы сможете создать свою собственную операционную систему — и, пожалуй, мало что в мире программистов может быть круче.

Благодаря этой книге вы научитесь следующему:
  • Узнаете, как создать операционную систему на основе технической документации железа. В реальном мире это так и работает, вы не сможете использовать Google для быстрых ответов.
  • Поймёте, как компьютерные компоненты взаимодействуют друг с другом, от софта к железу.
  • Научитесь писать код самостоятельно. Слепое копирование кода не есть обучение, вы действительно научитесь решать проблемы. Кстати, слепое копирование может быть еще и опасно.
  • Освоите всем привычные инструменты для низкоуровневой разработки.
  • Познакомитесь с языком ассемблера.
  • Выясните, из чего состоят программы и как операционная система запускает их. Небольшой обзор этой темы для любознательных мы давали в одном из наших материалов.
  • Разберётесь, как проводить отладку программы прямо на железе с GDB и QEMU.

Если читать целую книгу у вас нет времени, но вы хотите получить краткий экскурс, прочтите две наших статьи, посвященных созданию ядра для собственной ОС: часть 1 и часть 2.

Что рекомендуется знать перед прочтением книги:
  • Язык программирования C. Быстро освоить его можно, следуя нашему руководству.
  • Базовые знания Linux. Достаточно изучить соответствующую рубрику на нашем сайте.
  • Базовые знания в физике: атомы, электроны, протоны, нейтроны, напряжение.
  • Закон Ома о соотношении напряжения, силы тока и сопротивления.

Книга совершенствуется и редактируется почти каждый день: вы и сами можете внести изменения или исправить опечатку. Операционная система, разработка которой послужила “сюжетом” для этой книги, опубликована на GitHub и также со временем улучшается.

Возможно ли создать операционную систему на языке программирования Python?

anton_reut

Да. Вот погуглил за Вас:
Python OS Project - новая операционная система на . - правда используется ядро linux.

Но есть еще проект Cleese - это уже интересно. В рамках проекта Cleese развивается концепция создания интерпретатора байт-кода Python, способного работать непосредственно на "голой" системе, выступая в роли микро-ядра для запуска написанных на языке Python компонентов ядра ОС.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *