Python os модуль: Модуль os | Python 3 для начинающих и чайников
Содержание
Модуль 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 — модуль, реализующий некоторые полезные функции на работы с путями.
создание, изменение, удалений файлов ~ PythonRu
Обработка файлов в Python с помощью модуля os включает создание, переименование, перемещение, удаление файлов и папок, а также получение списка всех файлов и каталогов и многое другое.
В индустрии программного обеспечения большинство программ тем или иным образом обрабатывают файлы: создают их, переименовывают, перемещают и так далее. Любой программист должен обладать таким навыком. С этим руководством вы научитесь использовать модуль os в Python для проведения операций над файлами и каталогами вне зависимости от используемой операционной системы.
Важно знать, что модуль os используется не только для работы с файлами. Он включает массу методов и инструментов для других операций: обработки переменных среды, управления системными процессами, а также аргументы командной строки и даже расширенные атрибуты файлов, которые есть только в Linux.
Модуль встроенный, поэтому для работы с ним не нужно ничего устанавливать.
Вывод текущей директории
Для получения текущего рабочего каталога используется os.getcwd()
:
import os
print("Текущая деректория:", os.getcwd())
os.getcwd()
возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода:
Текущая деректория: C:\python3\bin
Создание папки
Для создания папки/каталога в любой операционной системе нужна следующая команда:
os.mkdir("folder")
После ее выполнения в текущем рабочем каталоге тут же появится новая папка с названием «folder».
Если запустить ее еще раз, будет вызвана ошибка FileExistsError
, потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:
if not os.path.isdir("folder"):
os.mkdir("folder")
Функция os.path.isdir()
вернет True
, если переданное имя ссылается на существующий каталог.
Изменение директории
Менять директории довольно просто. Проделаем это с только что созданным:
os.chdir("folder")
Еще раз выведем рабочий каталог:
print("Текущая директория изменилась на folder:", os.getcwd())
Вывод:
Текущая директория изменилась на folder: C:\python3\bin\folder
Создание вложенных папок
Предположим, вы хотите создать не только одну папку, но и несколько вложенных:
os.chdir("..")
os.makedirs("nested1/nested2/nested3")
Это создаст три папки рекурсивно, как показано на следующем изображении:
Создание файлов
Для создания файлов в Python модули не нужны. Можно использовать встроенную функцию open()
. Она принимает название файла, который необходимо создать в качестве первого параметра и желаемый режим открытия — как второй:
text_file = open("text.txt", "w")
text_file.write("Это текстовый файл")
w
значит write (запись), a
— это appending (добавление данных к уже существующему файлу), а r
— reading (чтение). Больше о режимах открытия можно почитать здесь.
Переименование файлов
С помощью модуля os достаточно просто переименовать файл. Поменяем название созданного в прошлом шаге.
os.rename("text.txt", "renamed-text.txt")
Функция os.rename()
принимает 2 аргумента: имя файла или папки, которые нужно переименовать и новое имя.
Перемещение файлов
Функцию os.replace()
можно использовать для перемещения файлов или каталогов:
os.replace("renamed-text.txt", "folder/renamed-text.txt")
Стоит обратить внимание, что это перезапишет путь, поэтому если в папке folder
уже есть файл с таким же именем (renamed-text.txt
), он будет перезаписан.
Список файлов и директорий
print("Все папки и файлы:", os.listdir())
Функция os.listdir()
возвращает список, который содержит имена файлов в папке. Если в качестве аргумента не указывать ничего, вернется список файлов и папок текущего рабочего каталога:
Все папки и файлы: ['folder', 'handling-files', 'nested1', 'text.txt']
А что если нужно узнать состав и этих папок тоже? Для этого нужно использовать функцию os.walk()
:
for dirpath, dirnames, filenames in os.walk("."):
for dirname in dirnames:
print("Каталог:", os.path.join(dirpath, dirname))
for filename in filenames:
print("Файл:", os.path.join(dirpath, filename))
os.walk()
— это генератор дерева каталогов. Он будет перебирать все переданные составляющие. Здесь в качестве аргумента передано значение «.», которое обозначает верхушку дерева:
Каталог: .\folder
Каталог: .\handling-files
Каталог: .\nested1
Файл: .\text.txt
Файл: .\handling-files\listing_files.py
Файл: .\handling-files\README.md
Каталог: .\nested1\nested2
Каталог: .\nested1\nested2\nested3
Метод os.path.join()
был использован для объединения текущего пути с именем файла/папки.
Удаление файлов
Удалим созданный файл:
os.remove("folder/renamed-text.txt")
os.remove()
удалит файл с указанным именем (не каталог).
Удаление директорий
С помощью функции os.rmdir()
можно удалить указанную папку:
os.rmdir("folder")
Для удаления каталогов рекурсивно необходимо использовать os.removedirs()
:
os.removedirs("nested1/nested2/nested3")
Это удалит только пустые каталоги.
Получение информации о файлах
Для получения информации о файле в ОС используется функция os.stat()
, которая выполняет системный вызов stat()
по выбранному пути:
open("text.txt", "w").write("Это текстовый файл")
print(os.stat("text.txt"))
Вывод:
os.stat_result(st_mode=33206, st_ino=14355223812608232, st_dev=1558443184, st_nlink=1, st_uid=0, st_gid=0, st_size=19, st_atime=1575967618, st_mtime=1575967618, st_ctime=1575966941)
Это вернет кортеж с отдельными метриками. В их числе есть следующие:
st_size
— размер файла в байтахst_atime
— время последнего доступа в секундах (временная метка)st_mtime
— время последнего измененияst_ctime
— в Windows это время создания файла, а в Linux — последнего изменения метаданных
Для получения конкретного атрибута нужно писать следующим образом:
print("Размер файла:", os.stat("text.txt").st_size)
Вывод:
Размер файла: 19
На этой странице больше об атрибутах.
Выводы
Работать с файлами и каталогами в Python очень просто. Не имеет значения даже используемая операционная система, хотя отдельные уникальные для системы функции можно использовать: например, os.chown()
или os.chmod()
в Linux. Более подробно эта тема освещена в официальной документации Python.
Модуль os — Документация Python для сетевых инженеров 3.0
Модуль 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')
Примеры использования модуля os в Python
Данный модуль можно применять во многих случаях. В данном разделе мы не рассмотрим каждый из них. Вместо этого, мы рассмотрим, как именно его можно применять, а также ознакомимся с подмодулем, под названием os.path. В частности, мы расскажем о:
- os.name
- os.environ
- os.chdir()
- os.getcwd()
- os.getenv()
- os.putenv()
- os.mkdir()
- os.makedirs()
- os.remove()
- os.rename()
- os.rmdir()
- os.startfile()
- os.walk()
- os.path
Это может выглядеть как большой объем материала, но есть еще минимум десяток других задач, которые модуль os может выполнять. Так что данный раздел можно назвать кратким экскурсом. Для использования любого из методов, упомянутых в данном разделе, вам нужно импортировать модуль os, вот так:
Итак, приступим!
os.name
Модуль os обладает как вызываемыми функциями, так и обычными значениями. В случае с os.name, речь идет только о значениях. При доступе к os.name, вы получите информацию о том, с какой платформой вы работаете. Вам откроются следующие значения: ‘posix’, ‘nt’, ‘os2’, ‘ce’, ‘java’, ‘riscos’. Давайте посмотрим на то, что выйдет, если запустить его на Windows 7:
import os
print(os.name) # ответ: nt
import os
print(os.name) # ответ: nt |
Это говорит нам о том, что наш экземпляр Пайтон работает в окне Windows. Как мы об этом узнали? Майкрософт начали называть свою операционную систему NT много лет назад. Например, Windows 7 также носит имя Windows NT 6.1.
os.environ, os.getenv() и os.putenv()
Значение os.environ известно как объект мэппинга (сопоставления), который работает со словарем переменных пользовательской среды. Возможно вы не знали, но каждый раз, когда вы пользуетесь своим компьютером, некоторые переменные среды уже установлены.
Это дает вам полезную информацию, такую как количество процессоров, тип ОЗУ, имя компьютера, и так далее. Посмотрим, что мы сможем узнать о нашем компьютере:
import os
print(os.environ)
import os print(os.environ) |
Ответ:
{‘ALLUSERSPROFILE’: ‘C:\\ProgramData’,
‘APPDATA’: ‘C:\\Users\\mike\\AppData\\Roaming’,
‘CLASSPATH’: ‘.;C:\\Program Files\\QuickTime\\QTSystem\\QTJava.zip’,
‘COMMONPROGRAMFILES’: ‘C:\\Program Files\\Common Files’,
‘COMPUTERNAME’: ‘MIKE-PC’,
‘COMSPEC’: ‘C:\\Windows\\system32\\cmd.exe’,
‘FP_NO_HOST_CHECK’: ‘NO’,
‘HOMEDRIVE’: ‘C:’,
‘HOMEPATH’: ‘\\Users\\mike’,
‘LOCALAPPDATA’: ‘C:\\Users\\mike\\AppData\\Local’,
‘LOGONSERVER’: ‘\\\\MIKE-PC’,
‘NUMBER_OF_PROCESSORS’: ‘2’,
‘OS’: ‘Windows_NT’,
‘PATHEXT’: ‘.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC’,
‘PROCESSOR_ARCHITECTURE’: ‘x86’,
‘PROCESSOR_IDENTIFIER’: ‘x86 Family 6 Model 15 Stepping 13, GenuineIntel’,
‘PROCESSOR_LEVEL’: ‘6’,
‘PROGRAMDATA’: ‘C:\\ProgramData’,
‘PROGRAMFILES’: ‘C:\\Program Files’,
‘PSMODULEPATH’: ‘C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\’,
‘PUBLIC’: ‘C:\\Users\\Public’,
‘PYTHONIOENCODING’: ‘cp437’,
‘QTJAVA’: ‘C:\\Program Files\\QuickTime\\QTSystem\\QTJava.zip’,
‘SESSIONNAME’: ‘Console’,
‘SYSTEMDRIVE’: ‘C:’,
‘SYSTEMROOT’: ‘C:\\Windows’,
‘TEMP’: ‘C:\\Users\\mike\\AppData\\Local\\Temp’,
‘TMP’: ‘C:\\Users\\mike\\AppData\\Local\\Temp’,
‘USERDOMAIN’: ‘mike-PC’,
‘USERNAME’: ‘mike’,
‘USERPROFILE’: ‘C:\\Users\\mike’,
‘VBOX_INSTALL_PATH’: ‘C:\\Program Files\\Oracle\\VirtualBox\\’,
‘VS90COMNTOOLS’: ‘C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\Tool\s\\’,
‘WINDIR’: ‘C:\\Windows’,
‘WINDOWS_TRACING_FLAGS’: ‘3’,
‘WINDOWS_TRACING_LOGFILE’: ‘C:\\BVTBin\\Tests\\installpackage\\csilogfile.log’,
‘WINGDB_ACTIVE’: ‘1’,
‘WINGDB_PYTHON’: ‘c:\\python27\\python.exe’,
‘WINGDB_SPAWNCOOKIE’: ‘rvlxwsGdD7SHYIJm’}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | {‘ALLUSERSPROFILE’: ‘C:\\ProgramData’, ‘APPDATA’: ‘C:\\Users\\mike\\AppData\\Roaming’, ‘CLASSPATH’: ‘.;C:\\Program Files\\QuickTime\\QTSystem\\QTJava.zip’, ‘COMMONPROGRAMFILES’: ‘C:\\Program Files\\Common Files’, ‘COMPUTERNAME’: ‘MIKE-PC’, ‘COMSPEC’: ‘C:\\Windows\\system32\\cmd.exe’, ‘FP_NO_HOST_CHECK’: ‘NO’, ‘HOMEDRIVE’: ‘C:’, ‘HOMEPATH’: ‘\\Users\\mike’, ‘LOCALAPPDATA’: ‘C:\\Users\\mike\\AppData\\Local’, ‘LOGONSERVER’: ‘\\\\MIKE-PC’, ‘NUMBER_OF_PROCESSORS’: ‘2’, ‘OS’: ‘Windows_NT’, ‘PATHEXT’: ‘.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC’, ‘PROCESSOR_ARCHITECTURE’: ‘x86’, ‘PROCESSOR_IDENTIFIER’: ‘x86 Family 6 Model 15 Stepping 13, GenuineIntel’, ‘PROCESSOR_LEVEL’: ‘6’, ‘PROGRAMDATA’: ‘C:\\ProgramData’, ‘PROGRAMFILES’: ‘C:\\Program Files’, ‘PSMODULEPATH’: ‘C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\’, ‘PUBLIC’: ‘C:\\Users\\Public’, ‘PYTHONIOENCODING’: ‘cp437’, ‘QTJAVA’: ‘C:\\Program Files\\QuickTime\\QTSystem\\QTJava.zip’, ‘SESSIONNAME’: ‘Console’, ‘SYSTEMDRIVE’: ‘C:’, ‘SYSTEMROOT’: ‘C:\\Windows’, ‘TEMP’: ‘C:\\Users\\mike\\AppData\\Local\\Temp’, ‘TMP’: ‘C:\\Users\\mike\\AppData\\Local\\Temp’, ‘USERDOMAIN’: ‘mike-PC’, ‘USERNAME’: ‘mike’, ‘USERPROFILE’: ‘C:\\Users\\mike’, ‘VBOX_INSTALL_PATH’: ‘C:\\Program Files\\Oracle\\VirtualBox\\’, ‘VS90COMNTOOLS’: ‘C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\Tool\s\\’, ‘WINDIR’: ‘C:\\Windows’, ‘WINDOWS_TRACING_FLAGS’: ‘3’, ‘WINDOWS_TRACING_LOGFILE’: ‘C:\\BVTBin\\Tests\\installpackage\\csilogfile.log’, ‘WINGDB_ACTIVE’: ‘1’, ‘WINGDB_PYTHON’: ‘c:\\python27\\python.exe’, ‘WINGDB_SPAWNCOOKIE’: ‘rvlxwsGdD7SHYIJm’} |
Ваши данные будут отличаться от моих, так как конфигурация компьютера у всех немного отличается, однако вы определенно увидите большое количество совпадений. Как вы могли заметить, это вернуло словарь. Это значит, что вы можете получить доступ к значениям среды, пользуясь обычными словарными методами. Например:
import os
print(os.environ[«TMP»]) # C:\\Users\\mike\\AppData\\Local\\Temp
import os
print(os.environ[«TMP»]) # C:\\Users\\mike\\AppData\\Local\\Temp |
Вы также можете использовать функцию os.getenv для доступа к этой переменной:
import os
print(os.getenv(«TMP»)) # C:\\Users\\mike\\AppData\\Local\\Temp
import os
print(os.getenv(«TMP»)) # C:\\Users\\mike\\AppData\\Local\\Temp |
Полезность использования os.getenv() вместо словаря os.environ заключается в том, что если вы находитесь в положении, когда вам нужно получить доступ к переменной среды, которая не существует, функция getenv попросту ничего не сделает. Если вы попытаетесь сделать то же самое, пользуясь os.environ, вы получите уведомление об ошибке. Давайте попробуем на примере:
import os
print(os.environ[«TMP2»])
import os
print(os.environ[«TMP2»]) |
Результат выполнения данного скрипта:
Traceback (most recent call last):
File «<pyshell#1>», line 1, in <module>
os.environ[«TMP2»]
File «C:\Python27\lib\os.py», line 423, in __getitem__
return self.data[key.upper()]
KeyError: ‘TMP2’
Traceback (most recent call last): File «<pyshell#1>», line 1, in <module> os.environ[«TMP2»] File «C:\Python27\lib\os.py», line 423, in __getitem__ return self.data[key.upper()] KeyError: ‘TMP2’ |
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
os.chdir() и os.getcwd()
Функция os.chdir позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии. Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать os.getcwd(). Попробуем воспользоваться обоими модулями:
import os
print(os.getcwd()) # C:\\Python27
os.chdir(r»C:\Users\mike\Documents»)
print(os.getcwd()) # C:\\Users\\mike\\Documents
import os
print(os.getcwd()) # C:\\Python27
os.chdir(r»C:\Users\mike\Documents») print(os.getcwd()) # C:\\Users\\mike\\Documents |
Указанный код демонстрирует нам, что мы открыли директорию по умолчанию в Пайтоне, после запуска данного кода в IDLE. После этого мы изменили папки, при помощи os.chdir(). Наконец, мы вызывали os.getcwd() еще раз, чтобы убедиться, что все изменения были выполнены правильно.
os.mkdir() и os.makedirs()
Как вы могли догадаться, эти два метода используются для создания папок. Первая, os.mkdir(), позволяет создать одну папку. Попробуем:
import os
os.mkdir(«test»)
path = r’C:\Users\mike\Documents\pytest’
os.mkdir(path)
import os
os.mkdir(«test») path = r’C:\Users\mike\Documents\pytest’ os.mkdir(path) |
Первая строка кода создает папку под названием test в определенном каталоге. Вы можете использовать эти модули в предыдущем разделе, чтобы узнать, где именно вы запустили свой код, на случай, если вы забыли. Во втором примере мы назначили путь к переменной, затем к os.mkdir(). Это позволяет вам создать папку в любой точке вашей системы, где есть доступ. Функция os.makedirs() создает промежуточные папки в пути, если их там нет. В целом, это значит, что вы создали путь, в котором размещены папки. Лично я часто прибегал к данному решению, когда была необходимость создания журнала, с датированной структурой, например Год\Месяц\День. Давайте взглянем на пример:
import os
path = r’C:\Users\mike\Documents\pytest\2014\02\19′
os.makedirs(path)
import os
path = r’C:\Users\mike\Documents\pytest\2014\02\19′ os.makedirs(path) |
Что произошло? Этот код просто создал кучу папок! Если в вашей системе все еще есть папка pytest, то в ней появится папка 2014, в которой также есть папка, в которой, удивительно, находится еще одна. Попробуйте сами, воспользовавшись рабочим путем в вашей системе.
os.remove() и os.rmdir()
Функции os.remove() и os.rmdir() используются для удаления файлов и каталогов соответственно. Посмотрим на os.remove():
import os
os.remove(«test.txt»)
import os
os.remove(«test.txt») |
Этот фрагмент кода пытается удалить файл под названием test.txt из вашего рабочего каталога. Если модуль не может найти файл, должно появиться уведомление о той или иной ошибке. Ошибка также возникнет, если файл уже используется (другими словами закрыт), или у вас нет разрешения для удаления данного файла. Возможно, вы хотите проверить os.unlink, который выполняет ту же функцию. Термин unlink – привычное для Unix название данной процедуры. Взглянем на пример работы os.rmdir():
import os
os.rmdir(«pytest»)
import os
os.rmdir(«pytest») |
Данный код попытается удалить каталог под названием pytest из каталога, используемого в данный момент в работе. В случае, если это удалось, каталог pytest исчезнет. Ошибка может возникнуть, если каталога с таким названием не существует, если у вас нет разрешения на его удаление, или если каталог не пустой. Вам возможно хочется взглянуть на os.removedirs(), который может удалить пустые вложенные каталоги.
os.rename(src, dst)
Функция os.rename() применяется тогда, когда нужно переименовать файл или папку. Посмотрим на примере:
os.rename(«test.txt», «pytest.txt»)
os.rename(«test.txt», «pytest.txt») |
В этом примере, мы указали os.rename на то, что нужно переименовать файл под названием test.txt на pytest.txt. Это произойдет в каталоге, с которым мы в данный момент работаем. Ошибка может возникнуть в том случае, если вы попытаетесь переименовать несуществующий файл, или если у вас нет доступа к данной операции. Также существует функция os.renames, которая меняет название папки или файла соответственно.
os.startfile()
Метод os.startfile() позволяет нам «запустить» файл в привязанной к нему программе. Другими словами, мы можем открыть файл вместе с привязанной к нему программой, как когда вы открываете файл PDF двойным щелчком, и он открывается в программе Adobe Reader. Попробуем:
import os
os.startfile(r’C:\Users\mike\Documents\labels.pdf’)
import os
os.startfile(r’C:\Users\mike\Documents\labels.pdf’) |
В данном примере мы прошли полный путь к модулю os.startfile, который указывает на открытие файла под названием labels.pdf. На моем компьютере данная функция открывает файл PDF в программе Adobe Reader. Попробуйте открыть файлы PDF, MP3 или фотографии на своем компьютере при помощи данного метода, чтобы увидеть как он работает.
os.walk()
Метод os.walk() дает нам возможность для итерации на корневом уровне пути. Это значит, что мы можем назначить путь к этой функции и получить доступ ко всем её подкаталогам и файлам. Используем одну из папок Пайтон, при помощи которой мы можем проверить данную функцию. Мы используем C:\Python27\Tools
import os
path = r’C:\Python27\Tools’
for root, dirs, files in os.walk(path):
print(root)
import os
path = r’C:\Python27\Tools’
for root, dirs, files in os.walk(path): print(root) |
Результат работы:
C:\Python27\Tools
C:\Python27\Tools\i18n
C:\Python27\Tools\pynche
C:\Python27\Tools\pynche\X
C:\Python27\Tools\Scripts
C:\Python27\Tools\versioncheck
C:\Python27\Tools\webchecker
C:\Python27\Tools C:\Python27\Tools\i18n C:\Python27\Tools\pynche C:\Python27\Tools\pynche\X C:\Python27\Tools\Scripts C:\Python27\Tools\versioncheck C:\Python27\Tools\webchecker |
Мы можем отобразить и весь список каталогов и файлов.
import os
for root, dirs, files in os.walk(path):
print(root)
for _dir in dirs:
print(_dir)
for _file in files:
print(_file)
import os
for root, dirs, files in os.walk(path): print(root) for _dir in dirs: print(_dir)
for _file in files: print(_file) |
Эта часть кода покажет нам весьма большой объем, так что не будем демонстрировать всю выдачу, вы можете ознакомиться с содержимым сами. Поздравляем, теперь мы готовы к тому, чтобы научиться работать с путями!
os.path
Подмодуль os.path модуля os имеет широкий ряд встроенных преимуществ. Ознакомимся со следующими функциями:
- basename
- dirname
- exists
- isdir and isfile
- join
- split
Это не все функции подмодуля. С ними мы можем ознакомиться позже.
os.path.basename
Функция basename вернет название файла пути. Пример:
import os
os.path.basename(r’C:\Python27\Tools\pynche\ChipViewer.py’)
# ChipViewer.py
import os
os.path.basename(r’C:\Python27\Tools\pynche\ChipViewer.py’) # ChipViewer.py |
Это очень полезная функция, особенно в тех случаях, когда нужно использовать имя файла для наименования того или иного связанного с работой файла, например лог-файл. Такая ситуация возникает часто при работе с файлами данных.
Недорогие и качественные просмотры в Телеграм доступны на сайте ДокторСмм с оптовыми скидками и персональными предложениями. Здесь Вам удастся подобрать, как наиболее привлекательный формат ресурса, так и самую оптимальную скорость поступления, доходящую до 1000 единиц в сутки. При этом Вы можете покупать просмотры, как к конкретному посту, так и ко всей ленте в целом.
os.path.dirname
Функция dirname возвращает только часть каталога пути. Это проще понять, если мы взглянем на пример кода:
import os
print( os.path.dirname(r’C:\Python27\Tools\pynche\ChipViewer.py’) )
# C:\\Python27\\Tools\\pynche
import os
print( os.path.dirname(r’C:\Python27\Tools\pynche\ChipViewer.py’) ) # C:\\Python27\\Tools\\pynche |
В данном примере мы просто возвращаем путь к каталогу. Это также полезно, когда вам нужно сохранить другие файлы рядом с тем, который вы обрабатываете в данный момент. Как и в случае с лог-файлом, упомянутым выше.
os.path.exists
Функция exists говорит нам, существует ли файл, или нет. Все что вам нужно, это указать ему путь. Взглянем на пример:
import os
os.path.exists(r’C:\Python27\Tools\pynche\ChipViewer.py’) # True
os.path.exists(r’C:\Python27\Tools\pynche\fake.py’) # False
import os
os.path.exists(r’C:\Python27\Tools\pynche\ChipViewer.py’) # True
os.path.exists(r’C:\Python27\Tools\pynche\fake.py’) # False |
В первом примере, мы указали функции exists настоящий путь, на что она указывает как True. Это говорит о том, что данный путь существует. Во втором примере, мы указали неправильный путь, от чего функция указывает нам на это сообщением False.
os.path.isdir / os.path.isfile
Методы isdir и isfile тесно связаны с методом exists, так как они также тестируют присутствие или отсутствие файлов или папок на тех или иных путях. Однако, isdir проверяет только пути к папкам, а isfile, соответственно, к файлам. Если вам нужно проверить путь, и не важно, папка это или файл, проще будет воспользоваться методом exists. В любом случае, взглянем на пару примеров:
import os
os.path.isfile(r’C:\Python27\Tools\pynche\ChipViewer.py’) # True
os.path.isdir(r’C:\Python27\Tools\pynche\ChipViewer.py’) # False
os.path.isdir(r’C:\Python27\Tools\pynche’) # True
os.path.isfile(r’C:\Python27\Tools\pynche’) # False
import os
os.path.isfile(r’C:\Python27\Tools\pynche\ChipViewer.py’) # True
os.path.isdir(r’C:\Python27\Tools\pynche\ChipViewer.py’) # False
os.path.isdir(r’C:\Python27\Tools\pynche’) # True
os.path.isfile(r’C:\Python27\Tools\pynche’) # False |
Уделите особое внимание данным примерам. В первом мы указали путь к файлу и проверили, является ли этот путь в действительности файлом. Затем, во втором примере, мы проделали то же самое, но в контексте папки. Вы можете лично ознакомиться с результатами. После этих двух примеров, мы немного изменили условия, указав путь к папке для обеих функций. Эти примеры наглядно демонстрируют то, как эти функции работают.
os.path.join
Метод join позволяет вам совместить несколько путей при помощи присвоенного разделителя. К примеру, в Windows, в роли разделителя выступает бэкслэш (косая черта, указывающая назад), однако в Linux функция разделителя присвоена косой черте, указывающей вперед (forward slash). Как это работает:
import os
print( os.path.join(r’C:\Python27\Tools\pynche’, ‘ChipViewer.py’) )
# C:\\Python27\\Tools\\pynche\\ChipViewer.py
import os
print( os.path.join(r’C:\Python27\Tools\pynche’, ‘ChipViewer.py’) ) # C:\\Python27\\Tools\\pynche\\ChipViewer.py |
В данном примере мы совместили путь каталога и файла вместе, для получения рабочего пути. Обратите внимание на то, что метод join не указывает на то, какой результат в итоге вышел.
os.path.split
Метод split разъединяет путь на кортеж, который содержит и файл и каталог. Взглянем на пример:
import os
print( os.path.split(r’C:\Python27\Tools\pynche\ChipViewer.py’) )
# (‘C:\\Python27\\Tools\\pynche’, ‘ChipViewer.py’)
import os
print( os.path.split(r’C:\Python27\Tools\pynche\ChipViewer.py’) ) # (‘C:\\Python27\\Tools\\pynche’, ‘ChipViewer.py’) |
В данном примере показано, что происходит, когда мы указываем путь к файлу. Теперь взглянем на то, что происходит, если в конце пути нет названия файла:
import os
print( os.path.split(r’C:\Python27\Tools\pynche’) )
# (‘C:\Python27\Tools’, ‘pynche’)
import os
print( os.path.split(r’C:\Python27\Tools\pynche’) ) # (‘C:\Python27\Tools’, ‘pynche’) |
Как видите, данная функция берет путь и разъединяет его таким образом, что подпапка стала вторым элементом кортежа с остальной частью пути в первом элементе. Напоследок, взглянем на бытовой случай использования split:
import os
dirname, fname = os.path.split(r’C:\Python27\Tools\pynche\ChipViewer.py’)
print(dirname)
# C:\\Python27\\Tools\\pynche
print(fname)
# ChipViewer.py
import os
dirname, fname = os.path.split(r’C:\Python27\Tools\pynche\ChipViewer.py’) print(dirname) # C:\\Python27\\Tools\\pynche
print(fname) # ChipViewer.py |
В данном примере указано, как сделать множественное назначение. Когда вы разъединяете путь, он становится кортежем, состоящим из двух частей. После того, как мы опробовали две переменные с левой части, первый элемент кортежа назначен к первой переменной, а второй элемент к второй переменной соответственно.
Подведем итоги
С данного момента модуль os можно смело назвать старым добрым знакомым. В данном разделе мы научились:
- Работать со значениями среды;
- Менять каталоги и находить тот, который в данный момент является рабочим;
- Создавать и удалять папки и файлы;
- Переименовывать папки и файлы;
- Открывать файл в соответствующей ему программе;
- Работать с путями.
И это не полный список того, что можно делать при помощи модуля os.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: [email protected]
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
описание модуля и методов — Примеры использования функций
Модуль os из стандартной библиотеки языка программирования Python обычно используется для работы с установленной ОС, а также файловой системой ПК. Он содержит массу полезных методов для взаимодействия с файлами и папками на жестком диске. Программы, работающие с модулем os, не зависят от типа ОС и являются легко переносимыми на другую платформу.
Что такое модуль os?
Модуль os в Python — это библиотека функций для работы с операционной системой. Методы, включенные в неё позволяют определять тип операционной системы, получать доступ к переменным окружения, управлять директориями и файлами:
- проверка существования объекта по заданному пути;
- определение размера в байтах;
- удаление;
- переименование и др.
При вызове функций os необходимо учитывать, что некоторые из них могут не поддерживаться текущей ОС.
Чтобы пользоваться методами из os, нужно подключить библиотеку. Для этого в Python используется import os, который необходимо описать в файле до первого обращения к модулю.
Рекомендуется использовать эту инструкцию в начале файла с исходным кодом.
Функции модуля os
Методы из библиотеки os могут применяться пользователем для разных целей. Ниже показаны наиболее популярные из них, позволяющие получать данные о операционной системе. Также получать сведения о файлах и папках, хранимых в памяти на жестком диске ПК.
Получение информации об ОС
Чтобы узнать имя текущей ОС, достаточно воспользоваться методом name. В зависимости от установленной платформы, он вернет ее короткое наименование в строковом представлении. Следующая программа была запущена на ПК с ОС Windows 10, поэтому результатом работы функции name является строка nt. Увидеть это можно при помощи обычного метода print.
import os print(os.name) nt
Получить сведения, которые касаются конфигурации компьютера, можно при помощи метода environ. Вызвав его через обращение к библиотеке os, пользователь получает большой словарь с переменными окружения, который выводится в консоль или строковую переменную. Таким образом, можно узнать название системного диска, адрес домашней директории, имя системы и массу другой информации. Следующий пример демонстрирует применение environ.
import os print(os.environ) environ({'ALLUSERSPROFILE': 'C:\\ProgramData', …})
При помощи функции getenv можно получить доступ к различным переменным среды. Чтобы сделать это, достаточно передать в качестве аргумента необходимое название переменной, как в следующем примере, где print выводит на экран сведения о TMP на дисплей в консоль.
import os print(os.getenv("TMP")) C:\Users\admin\AppData\Local\Temp
Изменение рабочей директории
По умолчанию рабочей директорией программы является каталог, где содержится документ с ее исходным кодом. Благодаря этому, можно не указывать абсолютный путь к файлу, если тот находится именно в этой папке. Получить сведения о текущей директории позволяет функция getcwd, которая возвращает полный адрес рабочего каталога на жестком диске. В следующем фрагменте кода показано что будет, если передать результат работы этого метода в print. Как можно заметить, рабочей директорией является каталог program на системном диске C.
import os print(os.getcwd()) C:\Users\admin\source\repos\program
При желании, рабочую директорию можно настроить по своему усмотрению, применив метод chdir из библиотеки os. Для этого необходимо передать ему в качестве параметра абсолютный адрес к новому каталогу. Если указанного пути на самом деле не существует, программа будет завершена в аварийном режиме из-за выброшенного исключения. В следующем примере кода продемонстрирован переход к новой рабочей директории под названием folder на диске D.
import os os.chdir(r"D:\folder") D:\folder
Проверка существования пути
Чтобы избежать ошибок, связанных с отсутствием определенного файла или директории, которые должны быть обработаны программой, следует предварительно проверять их наличие с помощью метода exists. Передав ему в качестве аргумента путь к нужному файлу или папке, можно рассчитывать на лаконичный ответ в виде булевого значения true/false, сообщающего о наличии/отсутствии указанного объекта в памяти компьютера. В следующем примере идет проверка текстового файла test.txt из корневого каталога D, которая возвращает True.
import os print(os.path.exists("D:/test.txt")) True
Если объект на диске реально существует, это не всегда значит, что он имеет подходящую для дальнейшей обработки форму. Проверить, является ли определенный объект файлом, поможет функция isfile, которая принимает его адрес. Ознакомиться с результатом его работы можно из следующего примера, где print отображает на экране значение True для файла test.txt.
import os print(os.path.isfile("D:/test.txt")) True
Аналогичные действия можно выполнить и для проверки объекта на принадлежность к классу директорий, вызвав для его адреса метод isdir из библиотеки os. Как можно заметить, в данном случае print выводит на экран булево значение False, поскольку test.txt не является папкой.
import os print(os.path.isdir("D:/test.txt")) False
Создание директорий
Возможности модуля os позволяют не только отображать информацию об уже существующих в памяти объектах, но и генерировать абсолютно новые. Например, с помощью метода mkdir довольно легко создать папку, просто указав для нее желаемый путь. В следующем примере в корневом каталоге диска D производится новая папка под названием folder через mkdir.
import os os.mkdir(r"D:\folder")
Однако на этом возможности по генерации директорий не заканчиваются. Благодаря функции makedirs можно создавать сразу несколько новых папок в неограниченном количестве, если предыдущая директория является родительской для следующей. Таким образом, в следующем примере показывается генерация целой цепочки папок из folder, first, second и third.
import os os.makedirs(r"D:\folder\first\second\third")
Удаление файлов и директорий
Избавиться от ненужного в дальнейшей работе файла можно с помощью метода remove, отдав ему в качестве аргумента абсолютный либо относительный путь к объекту. В небольшом коде ниже демонстрируется удаление документа test.txt из корневой директории диска D на ПК.
import os os.remove(r"D:\test.txt")
Чтобы стереть из памяти папку, следует воспользоваться встроенной функцией rmdir, указав ей адрес объекта. Однако здесь присутствуют определенные нюансы, поскольку программа не позволит беспрепятственно удалить директорию, в которой хранятся другие объекты. В таком случае на экране отобразится ошибка и будет выброшено исключение. В следующем примере производится процедура удаления пустой директории folder при помощи метода rmdir.
import os os.rmdir(r"D:\folder")
Для быстрого удаления множества пустых папок следует вызывать функцию removedirs. Она предоставляет возможность избавиться сразу от нескольких каталогов на диске, при условии, что все они вложены друг в друга. Таким образом, указав путь к конечной папке, можно легко удалить все родительские директории, но только если они в результате оказываются пустыми. В примере показано мгновенное удаление четырех разных папок: folder, first, second, third.
import os os.removedirs(r"D:\folder\first\second\third")
Запуск на исполнение
Встроенные функции библиотеки os позволяют запускать отдельные файлы и папки прямиком из программы. С этой задачей прекрасно справляется метод startfile, которому стоит передать адрес необходимо объекта. Программное обеспечение, используемое для открытия документа, определяется средой автоматически. Например, при запуске обычного файла test.txt, как это сделано в следующем примере, задействуется стандартный блокнот. Если передать функции ссылку на директорию, она будет открыта при помощи встроенного менеджера файлов.
import os os.startfile(r"D:\test.txt")
Получение имени файла и директории
Иногда для взаимодействия с документом необходимо получить его полное имя, включающее разрешение, но не абсолютный путь к нему на диске. Преобразовать адрес объекта в название позволяет функция basename, которая содержится в подмодуле path из библиотеки os. Таким образом, следующий пример показывает преобразование пути test.txt в простое имя файла.
import os print(os.path.basename("D:/test.txt")) test.txt
Обратная ситуация возникает тогда, когда пользователю нужно получить только путь к файлу, без самого названия объекта. Это поможет сделать метод dirname, который возвращает путь к заданному документу в строковом представлении, как это продемонстрировано в небольшом примере ниже. Здесь print выводит на экран адрес текстового документа в папке folder.
import os print(os.path.dirname("D:/folder/test.txt")) D:/folder
Вычисление размера
Чтобы определить размер документа или папки, стоит воспользоваться функцией getsize, как это показано в следующем примере для файла test.txt. Функция print выводит размер данного документа в байтах. Воспользоваться getsize можно и для измерения объема директорий.
import os print(os.path.getsize("D:\\test.txt")) 136226
Переименование
Библиотека os предоставляет возможность быстрой смены названия для любого файла или же каталога при помощи метода rename. Данная функция принимает сразу два разных аргумента. Первый отвечает за путь к старому наименованию документа, в то время как второй отвечает за его новое название. В примере показано переименование директории folder в catalog. Стоит помнить, что метод может генерировать исключение, если по указанному пути нет файла.
import os os.rename(r"D:\folder", r"D:\catalog")
Переименовывать можно не только один каталог, но и несколько папок сразу, только если все они находятся в одной иерархической цепочке. Для этого достаточно вызвать метод renames и передать ему путь к конечной директории в качестве первого аргумента. В роли же второго параметра выступает аналогичный адрес к папке, но только с новыми именами всей цепочки. Следующий пример демонстрирует правильное использование функции renames, за счет чего было произведено переименование директорий folder, first и second в catalog, one и two.
import os os.renames(r"D:\folder\first\second", r"D:\catalog\one\two")
Содержимое директорий
Проверить наличие в каталоге определенных объектов позволяет функция listdir. С её помощью можно получить информацию о файлах и папках в виде списка. В программе немного ниже показано, как метод принимает в качестве параметра путь к каталогу folder на диске D, а затем выводит название внутренней папки first и документа test.txt, вывод в консоль осуществляется с помощью print.
import os print(os.listdir(r"D:\folder")) ['first', 'test.txt']
Воспользовавшись методом walk, можно получить доступ к названиям и путям всех подпапок и файлов, относящихся к заданному каталогу. Применив один внешний цикл for, а также два вложенных, несложно получить информацию об объектах в каталоге folder через специальные списки directories и files. Сведения выдаются с помощью многократного обращения к print.
import os for root, directories, files in os.walk(r"D:\folder"): print(root) for directory in directories: print(directory) for file in files: print(file) D:\folder first D:\folder\first second D:\folder\first\second third D:\folder\first\second\third test.txt
Информация о файлах и директориях
Вывести на экран или в любое другое место основные сведения об объекте можно через метод stat. Поместив ему в качестве параметра расположение файла или папки на диске компьютера, стоит ожидать небольшой массив информации. Здесь можно найти данные о размере объекта в байтах, а также некие числовые значения, отображающие доступ и режим его работы.
import os print(os.stat(r"D:\test.txt")) os.stat_result(st_mode=33206, …)
Обработка путей
Возвращаясь к классу path из библиотеки os, стоит принять во внимание функцию split, позволяющую очень легко разъединять путь к файлу и имя файла в различные строки. Это демонстрируется на следующем примере с текстовым документом test.txt в папке folder.
import os print(os.path.split(r"D:\folder\test.txt")) ('D:\\folder', 'test.txt')
Обратное действие выполняет функция join, позволяя легко соединить путь к документу с его названием. Как видно из результатов работы данного кода, благодаря print на экране будет отображаться путь, который ссылается на текстовый файл test.txt в каталоге folder на D.
import os print(os.path.join(r"D:\folder", "test.txt")) D:\folder\test.txt
Это были базовые возможности модуля os, реализуемые в программах на языке Python за счет множества встроенных методов по управлению установленной ОС. Таким образом, они дают возможность не только получать полезные сведения о платформе, но и работать с содержимым диска, создавая новые директории и файлы, переименовывая и полностью удаляя их.
что это, документация и примеры работы с основными задачами операционной системы
Модуль OS в Python предоставляет простые функции, которые позволяют нам взаимодействовать и получать информацию об операционной системе и даже контролировать процессы до предела.
Функциональный модуль OS позволяет нам работать с основными задачами операционной системы, независимо от того, является ли это платформа Windows, Macintosh или Linux. В этом уроке мы рассмотрим эти функции и то, что с ними можно сделать.
Операционная система
Обратите внимание, что в первую очередь нам нужно импортировать модуль OS в нашу программу, только тогда мы можем выполнять любую из его функций.
os.name
Эта функция дает имя импортируемого модуля OS. Это зависит от базовой операционной системы. В настоящее время он регистрирует «posix», «os2», «ce», «nt», «riscos» и «java».
Выполним это в системе:
>>> print(os.name) posix
Понятно, что это может выводить разные платформы на основе интерпретатора.
os.environ
Environ – это не функция, а параметр процесса, через который мы можем получить доступ к переменным среды системы.
import os output = os.environ['HOME'] print(output)
Когда мы запустим этот скрипт, на выходе будет следующее:
os.execvp
execvp функция – это один из способов запуска других команд в системе. Давайте посмотрим на фрагмент кода для этой функции:
import os program = "python" arguments = ["hello.py"] print(os.execvp(program, (program,) + tuple(arguments)))
Давайте посмотрим на фрагмент кода hello.py:
print('Hello')
Когда мы запустим этот скрипт, на выходе будет следующее:
os.getuid
Эта функция модуля os возвращает идентификатор пользователя или UID текущего процесса, как это известно в народе.
>>> os.getuid() 501
Эта функция модуля os возвращает идентификатор пользователя текущего процесса или UID, как это известно в народе.
Итак, текущий идентификатор процесса оболочки – 501.
os.rename
С помощью функции rename мы можем легко переименовать файл.
import os fileDir = "JournalDev.txt" os.rename(fd,'JournalDev_Hi.txt')
Обратите внимание, что для этого мы должны предоставить правильные разрешения нашему скрипту.
os.system
Системная функция os позволяет нам запускать команду в скрипте Python, как если бы я запускал ее в своей оболочке. Например:
import os currentFiles = os.system("users > users.txt")
Когда я запустил этот скрипт, в том же каталоге был создан новый файл с именем users.txt и строкой содержимого как ‘shubham’, так как он также возвращается исходной оболочкой:
Обратите внимание, что это очень мощная команда, и ее следует использовать с осторожностью.
os.error
Класс ошибок модуля os – это базовый класс для ошибок, связанных с вводом-выводом. Таким образом, мы можем отлавливать ошибки ввода-вывода, используя OSError в предложении except.
import os try: f = open('abc.txt', 'r') # file is missing except OSError: print('Error')
os.getpid
Эта функция возвращает текущий идентификатор процесса или PID, как это известно в народе.
>>> os.getpid() 71622
Итак, идентификатор пользователя текущего процесса оболочки – 71622.
os.listdir
Эта функция просто выводит список файлов и каталогов, имеющихся в текущем рабочем каталоге.
>>> import os >>> os.listdir() ['.DS_Store', '.localized', 'JournalDev', 'Java', 'Python']
Он возвращает повторяющийся список имен каталогов и файлов.
os.uname
Эта функция возвращает информацию, которая определяет текущую операционную систему, в которой она выполняется.
>>> os.uname() posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')
Сравнение import os.path и os
os.path странно работает на самом деле. Похоже, что в os комплекте идет подмодуль path, но на самом деле это обычный модуль, с которым работает sys.module для поддержки os.path. Перечислим, что происходит:
- Когда Python запускается, он загружает множество модулей в sys.module.
- Модуль os также загружается при запуске Python. Он назначает свой путь специфическому атрибуту модуля os.
- Он вводит sys.modules [‘os.path’] = path, чтобы вы могли импортировать os.path, как если бы это был подмодуль.
Python введение в модуль OS
В последнее время Python является одним из наиболее часто используемых языков для различных задач, таких как обработки данных, анализ данных и создание веб-сайтов. В этом процессе существуют различные задачи, которые зависят от операционной системы. Python позволяет разработчику использовать несколько OS-зависимых функций с модулем OS. Этот пакет абстрагирует функциональные возможности платформы и предоставляет функции python для навигации, создания, удаления и изменения файлов и папок. В этом руководстве вы можете узнать, как импортировать этот пакет, его основные функции и пример проекта на python, который использует эту библиотеку для задачи объединения данных.
Некоторые основные функции
Давайте рассмотрим модуль с примером кода.
Импортируйте библиотеку:
import os
Давайте получим список методов, которые мы можем использовать с этим модулем.
print(dir(os))
Мы получим:
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']
Теперь, используя метод getcwd, мы можем получить путь к текущему рабочему каталогу.
print(os.getcwd()) # C:\Users\hpandya\OneDrive\work\StackAbuse\os_python\os_python\Project
Список папок и файлов
Давайте перечислим папки / файлы в текущем каталоге, используя listdir:
print(os.listdir()) # ['Data', 'Population_Data', 'README.md', 'tutorial.py', 'tutorial_v2.py']
Как видите, у меня есть 2 папки: Data и Population_Data. У меня также есть 3 файла: файл разметки README.md и два файла Python, а именно, tutorial.py и tutorial_v2.py.
Чтобы получить всю древовидную структуру папки моего проекта, давайте напишем функцию и затем используем os.walk(), чтобы перебрать все файлы в каждой папке текущего каталога.
def list_files(startpath): for root, dirs, files in os.walk(startpath): if dir!= '.git': level = root.replace(startpath, '').count(os.sep) indent = ' ' * 4 * (level) print('{}{}/'.format(indent, os.path.basename(root))) subindent = ' ' * 4 * (level + 1) for f in files: print('{}{}'.format(subindent, f))
Вызовите эту функцию, используя текущий путь к рабочей директории, который мы видели как это сделать ранее:
startpath = os.getcwd() list_files(startpath)
Мы получим:
Project/ README.md tutorial.py tutorial_v2.py Data/ uscitiesv1.4.csv Population_Data/ Alabama/ Alabama_population.csv Alaska/ Alaska_population.csv Arizona/ Arizona_population.csv Arkansas/ Arkansas_population.csv California/ California_population.csv Colorado/ Colorado_population.csv Connecticut/ Connecticut_population.csv Delaware/ Delaware_population.csv ...
Вывод был усечен для краткости.
Как видно из вывода, имена папок оканчиваются на /, а файлы внутри папок имеют отступ с четырьмя пробелами справа. В папке Data есть один CSV-файл с именем uscitiesv1.4.csv. Этот файл содержит данные о населении для каждого города в Соединенных Штатах. Папка Population_Data содержит папки для состояний, содержащие отдельные csv-файлы для данных о населении для каждого состояния, извлеченные из uscitiesv1.4.csv.
Изменить рабочий каталог
Давайте изменим рабочий каталог и войдем в каталог данных с названием «New York».
os.chdir('Population_Data/New York')
Теперь давайте снова запустим метод list_files, но в этом каталоге.
list_files(os.getcwd()) # New York/ # New York_population.csv
Как видите, мы вошли в папку New York в папке Population_Data.
Создать единую и вложенную структуру каталогов
Теперь давайте создадим новый каталог с именем testdir в этом каталоге.
os.mkdir('testdir') list_files(os.getcwd())
Получим:
New York/ New York_population.csv testdir/
Как видите, он создает новый каталог в текущем рабочем каталоге.
Давайте создадим вложенный каталог с 2 уровнями.
os.mkdir('level1dir/level2dir')
В ответ мы получим:
Traceback (most recent call last): File "", line 1, in os.mkdir('level1dir/level2dir') FileNotFoundError: [WinError 3] The system cannot find the path specified: 'level1dir/level2dir'
Мы получаем ошибку. Чтобы быть конкретным, мы получаем FileNotFoundError. Вы можете спросить, почему ошибка FileNotFound, когда мы пытаемся создать каталог.
Причина: модуль Python ищет каталог с именем level1dir для создания каталога level2dir. Так как level1dir не существует, он выдает FileNotFoundError.
Для подобных целей вместо этого используется функция mkdirs(), которая может рекурсивно создавать несколько каталогов.
os.makedirs('level1dir/level2dir')
Проверьте текущее дерево каталогов,
list_files(os.getcwd())
Мы получим:
New York/ New York_population.csv level1dir/ level2dir/ testdir/
Как мы видим, теперь у нас есть две подкаталоги в папке New York. testdir и level1dir. level1dir имеет каталог под названием level2dir.
Рекурсивно удалить один или несколько каталогов
Модуль os также имеет методы для изменения или удаления каталогов, которые я покажу здесь.
Теперь давайте удалим каталоги, которые мы только что создали, используя rmdir:
os.rmdir('testdir')
Проверьте текущее дерево каталогов, чтобы убедиться, что каталог больше не существует:
list_files(os.getcwd())
Должно получится следующее:
New York/ New York_population.csv level1dir/ level2dir/
Как видите, testdir был удален.
Давайте попробуем удалить структуру вложенных каталогов level1dir и level2dir.
os.rmdir('level1dir')
В результате мы получим:
OSError Traceback (most recent call last) in () ----> 1 os.rmdir('level1dir') OSError: [WinError 145] The directory is not empty: 'level1dir'
Как видно, этот код бросает ошибку OSError и это правильно. Он говорит, что каталог level1dir не пуст. Это правильно, потому что под ним есть level2dir.
С помощью метода rmdir невозможно удалить непустой каталог, аналогичный версии командной строки Unix.
Так же, как и метод makedirs(), давайте попробуем rmdirs(), который рекурсивно удаляет каталоги в древовидной структуре.
os.removedirs('level1dir/level2dir')
Давайте снова посмотрим на структуру дерева каталогов:
list_files(os.getcwd())
Получим:
New York/ New York_population.csv
Это подводит нас к предыдущему состоянию каталога.
Пример с обработкой данных
До сих пор мы изучали, как просматривать, создавать и удалять структуру вложенных каталогов. Теперь давайте посмотрим, как модуль os помогает в обработке данных.
Для этого давайте поднимемся на один уровень выше в структуре каталогов.
os.chdir('../')
С этим, давайте снова рассмотрим структуру дерева каталогов.
list_files(os.getcwd())
В ответ мы получим:
Population_Data/ Alabama/ Alabama_population.csv Alaska/ Alaska_population.csv Arizona/ Arizona_population.csv Arkansas/ Arkansas_population.csv California/ California_population.csv Colorado/ Colorado_population.csv Connecticut/ Connecticut_population.csv Delaware/ Delaware_population.csv ...
Давайте объединяем данные из всех состояний, перебирая каталог каждого состояния и аналогично объединяя файлы CSV.
import os import pandas as pd # создать список для хранения данных из каждого файла list_states = [] # цикл по всем папкам и добавление их данных в список for root, dirs, files in os.walk(os.getcwd()): if files: list_states.append(pd.read_csv(root+'/'+files[0], index_col=None)) # объединить кадры в один, используя библиотеку Pandas merge_data = pd.concat(list_states[1:], sort=False)
Частично благодаря модулю os мы смогли создать merge_data, который представляет собой фрейм данных, содержащий данные о населении из каждого штата.
Заключение
В этой статье мы кратко рассмотрели различные возможности встроенного в Python модуля os. Мы также увидели краткий пример того, как этот модуль можно использовать в мире наук о данных и аналитики. Важно понимать, что ОС может предложить гораздо больше, и исходя из потребностей разработчика, можно построить гораздо более сложную логику.
10. Краткий обзор стандартной библиотеки — документация Python 3.10.0
10.1. Интерфейс операционной системы
Модуль os
предоставляет множество функций для взаимодействия с
операционная система:
>>> импорт ОС >>> os.getcwd () # Вернуть текущий рабочий каталог 'C: \\ Python310' >>> os.chdir ('/ server / accesslogs') # Сменить текущий рабочий каталог >>> os.system ('mkdir today') # Запускаем команду mkdir в системной оболочке 0
Обязательно используйте стиль import os
вместо from os import *
.Этот
сохранит os.open ()
от затенения встроенной функции open ()
, которая
действует совсем иначе.
Встроенные функции dir ()
и help ()
полезны как интерактивные
вспомогательные средства для работы с большими модулями, такими как os
:
>>> импорт ОС >>> dir (os) <возвращает список всех функций модуля> >>> помощь (os) <возвращает обширную справочную страницу, созданную из строк документации модуля>
Для ежедневных задач управления файлами и каталогами модуль shutil
предоставляет
более простой в использовании интерфейс более высокого уровня:
>>> import shutil >>> шутил.copyfile ('data.db', 'archive.db') 'archive.db' >>> shutil.move ('/ build / исполняемые файлы', 'installdir') 'installdir'
10.2. Подстановочные знаки файла
Модуль glob
предоставляет функцию для создания списков файлов из каталога
поиск с подстановочными знаками:
>>> import glob >>> glob.glob ('*. py') ['primes.py', 'random.py', 'quote.py']
10.3. Аргументы командной строки
Общие служебные сценарии часто нуждаются в обработке аргументов командной строки.Эти
аргументы хранятся в атрибуте argv модуля sys
в виде списка. Для
Например, следующий результат будет результатом запуска python demo.py one two
в командной строке:
три
>>> import sys >>> печать (sys.argv) ['demo.py', 'один', 'два', 'три']
Модуль argparse
обеспечивает более сложный механизм обработки
аргументы командной строки. Следующий скрипт извлекает одно или несколько имен файлов
и необязательное количество отображаемых строк:
импорт argparse парсер = argparse.ArgumentParser (prog = 'top', description = 'Показывать верхние строки из каждого файла') parser.add_argument ('имена файлов', nargs = '+') parser.add_argument ('- l', '--lines', type = int, по умолчанию = 10) args = parser.parse_args () печать (аргументы)
При запуске из командной строки с python top.py --lines = 5 alpha.txt
, сценарий устанавливает
beta.txt строк аргументов с
по 5
и имен файлов
на ['alpha.txt', 'beta.txt']
.
10.4. Перенаправление вывода ошибок и завершение программы
Модуль sys
также имеет атрибуты для stdin , stdout и stderr .Последний полезен для выдачи предупреждений и сообщений об ошибках, чтобы сделать их
виден даже при перенаправлении stdout :
>>> sys.stderr.write ('Предупреждение, файл журнала не найден, начинается новый \ n') Предупреждение, файл журнала не найден, начиная с нового
Самый простой способ завершить сценарий — использовать sys.exit ()
.
10,5. Соответствие строковому шаблону
Модуль re
предоставляет инструменты регулярных выражений для расширенных строковых
обработка.Для сложных сопоставлений и манипуляций регулярные выражения предлагают
краткие, оптимизированные решения:
>>> импорт ре >>> re.findall (r '\ bf [a-z] *', 'какая нога или рука упала быстрее всего') ['нога', 'упал', 'самый быстрый'] >>> re.sub (r '(\ b [a-z] +) \ 1', r '\ 1', 'кот в шляпе') 'Кот в шляпе'
Когда требуются только простые возможности, предпочтительны строковые методы, потому что
их легче читать и отлаживать:
>>> 'чай для тоже'. Заменить ('тоже', 'два') 'чай для двоих'
10.6. Математика
Модуль math
предоставляет доступ к базовым функциям библиотеки C для
математика с плавающей запятой:
>>> импорт математики >>> math.cos (math.pi / 4) 0,70710678118654757 >>> math.log (1024, 2) 10.0
Модуль random
предоставляет инструменты для случайного выбора:
>>> импорт случайный >>> random.choice (['яблоко', 'груша', 'банан']) 'яблоко' >>> random.sample (range (100), 10) # выборка без замены [30, 83, 16, 4, 8, 81, 41, 50, 18, 33] >>> случайный.random () # случайное число с плавающей запятой 0,17970987693706186 >>> random.randrange (6) # случайное целое число, выбранное из диапазона (6) 4
Модуль статистики
вычисляет основные статистические свойства
(среднее значение, медиана, дисперсия и т. д.) числовых данных:
>>> статистика импорта >>> данные = [2,75, 1,75, 1,25, 0,25, 0,5, 1,25, 3,5] >>> statistics.mean (данные) 1,6071428571428572 >>> statistics.median (данные) 1,25 >>> statistics.variance (данные) 1.3720238095238095
В проекте SciPy
вычисления.
10.7. Доступ в Интернет
Имеется ряд модулей для доступа в Интернет и обработки данных в Интернете.
протоколы. Два из самых простых — urllib.request
для получения данных.
с URL и smtplib
для отправки почты:
>>> из urllib.request import urlopen >>> с urlopen ('http: // tycho.usno.navy.mil/cgi-bin/timer.pl ') в качестве ответа: ... для строки в ответе: ... line = line.decode ('utf-8') # Декодирование двоичных данных в текст. ... если в строке 'EST' или в строке 'EDT': # ищите восточное время ... печать (строка)
Ноя. 25, 21:43:32 EST >>> импортировать smtplib >>> сервер = smtplib.SMTP ('локальный хост') >>> server.sendmail ('[email protected] ',' [email protected] ', ... "" "Кому: [email protected] ... От: прорицатель @ пример.org ... ... Остерегайтесь мартовских ид. ... "" ") >>> server.quit ()
(Обратите внимание, что во втором примере требуется почтовый сервер, работающий на локальном хосте.)
10.8. Даты и время
Модуль datetime
предоставляет классы для управления датой и временем в
как простые, так и сложные способы. Хотя арифметика даты и времени поддерживается,
Основное внимание в реализации уделяется эффективному извлечению элементов для вывода
форматирование и манипуляции. Модуль также поддерживает объекты часового пояса.
осведомленный.
>>> # даты легко конструируются и форматируются >>> от даты импорта даты и времени >>> сейчас = date.today () >>> сейчас datetime.date (2003, 12, 2) >>> now.strftime ("% m-% d-% y.% d% b% Y - это% A в% d день% B.") '12-02-03. 2 декабря 2003 г. - вторник 2 декабря ». >>> # даты поддерживают календарную арифметику >>> день рождения = дата (1964, 7, 31) >>> age = now - день рождения >>> age.days 14368
10.9. Сжатие данных
Стандартные форматы архивирования и сжатия данных напрямую поддерживаются модулями
в том числе: zlib
, gzip
, bz2
, lzma
, zipfile
и
tarfile
.
>>> импортировать zlib >>> s = b'witch, у которого есть наручные часы ведьм ' >>> len (s) 41 год >>> t = zlib.compress (s) >>> len (t) 37 >>> zlib.decompress (t) b'witch, у которого есть ведьмы наручные часы ' >>> злиб.crc32 (s) 226805979
10.10. Оценка эффективности
Некоторые пользователи Python проявляют глубокий интерес к знанию относительной производительности
разные подходы к одной и той же проблеме. Python предоставляет инструмент измерения
это сразу же отвечает на эти вопросы.
Например, может возникнуть соблазн использовать функцию упаковки и распаковки кортежей.
вместо традиционного подхода к обмену аргументами. Часы timeit
модуль быстро демонстрирует скромное преимущество в производительности:
>>> из timeit import Timer >>> Таймер ('t = a; a = b; b = t', 'a = 1; b = 2').timeit () 0,57535828626024577 >>> Timer ('a, b = b, a', 'a = 1; b = 2'). Timeit () 0,54962537085770791
В отличие от тонкого уровня детализации timeit
, профиль
и
pstats Модули
предоставляют инструменты для определения критических по времени разделов в
большие блоки кода.
10.11. Контроль качества
Один из подходов к разработке высококачественного программного обеспечения — написать тесты для каждого
функционировать по мере разработки и часто запускать эти тесты во время
процесс развития.
Модуль doctest
предоставляет инструмент для сканирования модуля и проверки
тесты, встроенные в строки документации программы. Построение теста так же просто, как
вырезание и вставка типичного вызова вместе с его результатами в строку документации.
Это улучшает документацию, предоставляя пользователю пример и
позволяет модулю doctest убедиться, что код соответствует
документация:
по умолчанию (значения): "" "Вычисляет среднее арифметическое списка чисел.>>> print (средний ([20, 30, 70])) 40,0 "" " возвращаемая сумма (значения) / len (значения) импорт документов doctest.testmod () # автоматически проверять встроенные тесты
Модуль unittest
не так прост, как модуль doctest
,
но это позволяет хранить более полный набор тестов в отдельном
файл:
импортный unittest класс TestStatisticalFunctions (unittest.TestCase): def test_average (сам): self.assertEqual (средний ([20, 30, 70]), 40.0) self.assertEqual (round (средний ([1, 5, 7]), 1), 4.3) с self.assertRaises (ZeroDivisionError): в среднем([]) с self.assertRaises (TypeError): средний (20, 30, 70) unittest.main () # Вызов из командной строки вызывает все тесты
10.12. Батареи в комплекте
Python придерживается философии «батарейки включены». Лучше всего это видно через
сложные и надежные возможности его больших пакетов. Например:
Файл
xmlrpc.модули client
иxmlrpc.server
выполняют реализацию
удаленные вызовы процедур превращаются в почти тривиальную задачу. Несмотря на модули
имена, никаких непосредственных знаний или обработки XML не требуется.Пакет
email
— это библиотека для управления сообщениями электронной почты, включая
MIME и другие документы сообщений на основе RFC 2822 . В отличие отsmtplib
и
poplib
, которые фактически отправляют и получают сообщения, пакет электронной почты имеет
полный набор инструментов для построения или декодирования сложных структур сообщений
(включая вложения) и для реализации интернет-кодирования и заголовка
протоколы.Пакет
json
обеспечивает надежную поддержку для синтаксического анализа этого
популярный формат обмена данными. Модульcsv
поддерживает
прямое чтение и запись файлов в формате значений, разделенных запятыми,
обычно поддерживается базами данных и электронными таблицами. Обработка XML
поддерживаетсяxml.etree.ElementTree
,xml.dom
и
xml.sax
пакетов. Вместе эти модули и пакеты
значительно упростить обмен данными между приложениями Python и
другие инструменты.Модуль
sqlite3
является оболочкой для базы данных SQLite
библиотека, предоставляющая постоянную базу данных, которую можно обновлять и
доступ осуществляется с использованием немного нестандартного синтаксиса SQL.Интернационализация поддерживается рядом модулей, включая
gettext
,locale
иcodecs
package.
os.path — Общие манипуляции с путями — документация Python 3.10.0
Исходный код: Lib / posixpath.py (для POSIX) и
Lib / ntpath.py (для Windows NT).
Этот модуль реализует некоторые полезные функции для имен путей. Читать или
для записи файлов см. open ()
, а для доступа к файловой системе см.
os
модуль. Параметры пути могут быть переданы как строки,
или байты. Приложениям рекомендуется представлять имена файлов как
Строки символов (Unicode). К сожалению, некоторые имена файлов могут не совпадать.
представлены в виде строк в Unix, поэтому приложения, которые должны поддерживать
произвольные имена файлов в Unix должны использовать байтовые объекты для представления
имена путей.И наоборот, использование байтовых объектов не может представлять весь файл.
имена в Windows (в стандартной кодировке mbcs
), следовательно, Windows
приложения должны использовать строковые объекты для доступа ко всем файлам.
В отличие от оболочки unix, Python не выполняет никаких автоматических расширений пути .
Можно вызывать такие функции, как expanduser ()
и expandvars ()
.
явно, когда приложение требует расширения пути в виде оболочки. (Смотрите также
модуль glob
.)
См. Также
Модуль pathlib
предлагает высокоуровневые объекты пути.
Примечание
Все эти функции принимают либо только байты, либо только строковые объекты как
их параметры. Результатом является объект того же типа, если путь или
возвращается имя файла.
Примечание
Поскольку разные операционные системы имеют разные соглашения об именах путей,
В стандартной библиотеке есть несколько версий этого модуля. В
os.path Модуль
всегда является модулем пути, подходящим для работы
система Python работает, и поэтому может использоваться для локальных путей.Тем не мение,
вы также можете импортировать и использовать отдельные модули, если хотите управлять
путь всегда в одном из разных форматов. У всех есть
тот же интерфейс:
-
os.path.
abspath
( путь ) Возвращает нормализованную абсолютизированную версию пути путь . На большинстве
платформ, это эквивалентно вызову функцииnormpath ()
как
следует:normpath (join (os.getcwd (), path))
.
-
os.path.
базовое имя
( путь ) Вернуть базовое имя пути путь . Это второй элемент
пара, возвращенная путем передачи path функцииsplit ()
. Обратите внимание, что
результат этой функции другой
из программы Unix basename ; где базовое имя для
'/ foo / bar /'
возвращает'bar'
, функцияbasename ()
возвращает
пустая строка (''
).
-
os.path.
общий путь
( путей ) Возвращает самый длинный общий подпуть каждого пути в последовательности
путей . ПоднимитеValueError
, если путей содержат оба абсолютных
и относительные пути, пути находятся на разных дисках или
если путей пусто. В отличие отcommonprefix ()
, это возвращает
действительный путь.Доступность: Unix, Windows.
-
os.path.
общий префикс
( список ) Возвращает префикс самого длинного пути (посимвольно), который является
префикс всех путей в списке . Если список пуст, вернуть пустую строку
(''
).Примечание
Эта функция может возвращать недопустимые пути, потому что она работает
персонаж за раз. Чтобы получить действительный путь, см.
commonpath ()
.>>> os.path.commonprefix (['/ usr / lib', '/ usr / local / lib']) '/ usr / l' >>> os.path.commonpath (['/ usr / lib', '/ usr / local / lib']) '/ usr'
-
os.path.
имя каталога
( путь ) Возвращает имя каталога пути путь . Это первый элемент
пара, возвращенная передачей path функцииsplit ()
.
-
os.path.
существует
( путь ) Возврат
Истина
, если путь относится к существующему пути или открытому
дескриптор файла.ВозвращаетЛожь
для неработающих символических ссылок. На
на некоторых платформах эта функция может возвращатьFalse
, если разрешение
не предоставлено для выполненияos.stat ()
в запрошенном файле, даже
если путь физически существует.Изменено в версии 3.3: путь теперь может быть целым числом:
Истина
возвращается, если это
дескриптор открытого файла,Ложь
в противном случае.
-
os.path.
лексистов
( путь ) Вернуть
Истина
, если путь ссылается на существующий путь.ВозвращаетTrue
для
битые символические ссылки. Эквивалентсуществует ()
на платформах без
os.lstat ()
.
-
os.path.
expanduser
( путь ) В Unix и Windows вернуть аргумент с начальным компонентом
~
или
~ пользователь
заменен домашним каталогом этого пользователя .В Unix начальные
~
заменяются переменной средыHOME
если он установлен; в противном случае домашний каталог текущего пользователя ищется в
каталог паролей через встроенный модульpwd
.Начальный~ пользователь
ищется прямо в каталоге паролей.В Windows,
ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ
будет использоваться, если установлен, иначе комбинация
изHOMEPATH
иHOMEDRIVE
. Первоначальный
~ пользователь
обрабатывается путем проверки того, что последний компонент каталога текущего
домашний каталог пользователя соответствуетИМЯ ПОЛЬЗОВАТЕЛЯ
, и замените его, если так.Если раскрытие не удалось или путь не начинается с тильды, путь будет
вернулся без изменений.Изменено в версии 3.8:
HOME
больше не используется в Windows.
-
os.path.
расширений
( путь ) Вернуть аргумент с раскрытыми переменными среды. Подстроки формы
$ name
или$ {name}
заменяются значением переменной среды
название . Неправильные имена переменных и ссылки на несуществующие переменные
оставлен без изменений.В Windows поддерживаются расширения
% name%
в дополнение к$ name
и
$ {name}
.
-
os.path.
getatime
( путь ) Возвращает время последнего доступа пути . Возвращаемое значение — число с плавающей запятой, дающее
количество секунд с начала эпохи (см. модульвремя
). Поднимать
OSError
, если файл не существует или недоступен.
-
os.path.
getmtime
( путь ) Возвращает время последней модификации пути .Возвращаемое значение — число с плавающей запятой.
дающий количество секунд с начала эпохи (см. модульвремя
).
ВызовOSError
, если файл не существует или недоступен.
-
os.path.
getctime
( путь ) Возвращает системное время ctime, которое в некоторых системах (например, Unix) является временем
последнее изменение метаданных, а в других случаях (например, Windows) — время создания пути .Возвращаемое значение — это число, дающее количество секунд с начала эпохи (см.
модульвремя
). ВызовOSError
, если файл не существует или
недоступен.
-
os.path.
getsize
( путь ) Возвращает размер в байтах пути . Вызов
OSError
, если файл
не существует или недоступен.
-
os.path.
isabs
(путь , ) Вернуть
Истина
, если путь является абсолютным путем.В Unix это означает
начинается с косой черты, в Windows — с косой черты (обратной) после нарезки
с потенциальной буквы диска.
-
os.path.
isfile
( путь ) Вернуть
Истина
, если путь — этосуществующий обычный файл
.
Это следует за символическими ссылками, поэтому какislink ()
, так иisfile ()
могут
быть верным для того же пути.
-
ос.дорожка.
isdir
( путь ) Вернуть
Истина
, если путь — этосуществующий каталог
. Этот
следует по символическим ссылкам, поэтому иislink ()
, иisdir ()
могут быть истинными
по тому же пути.
-
os.path.
islink
( путь ) Вернуть
Истина
, если путь относится к существующему каталогу
запись, которая является символической ссылкой.ВсегдаЛожь
, если символические ссылки не являются
поддерживается средой выполнения Python.
-
os.path.
ismount
( путь ) Вернуть
Истина
, если путь путь — это точка монтирования : точка в
файловая система, в которой смонтирована другая файловая система. В POSIX
функция проверяет, находится ли родительский путь путь ,путь / ..
, на другом
устройство, чем путь , илипуть /..
и пути указывают на одно и то же
i-node на том же устройстве — это должно определять точки монтирования для всех Unix
и варианты POSIX. Он не может надежно обнаружить крепления на
та же файловая система. В Windows корень с буквой диска и общий UNC
всегда точки монтирования, а для любого другого путиGetVolumePathName вызывается
чтобы увидеть, отличается ли он от входного пути.Новое в версии 3.4: Поддержка определения точек монтирования без полномочий root в Windows.
-
ос.дорожка.
присоединиться
( путь , * пути ) Разумно объедините один или несколько компонентов пути. Возвращаемое значение — это
конкатенация пути и любых элементов * путей ровно с одним
разделитель каталогов после каждой непустой части, кроме последней, что означает
что результат будет заканчиваться разделителем только в том случае, если последняя часть пуста. Если
компонент — это абсолютный путь, все предыдущие компоненты отбрасываются
и соединение продолжается от компонента абсолютного пути.В Windows буква диска не сбрасывается, если компонент абсолютного пути
(например,r '\ foo'
) встречается. Если компонент содержит привод
буква, все предыдущие компоненты выбрасываются, а буква диска
сброс настроек. Обратите внимание, что, поскольку для каждого диска есть текущий каталог,
os.path.join ("c:", "foo")
представляет путь относительно текущего
каталог на дискеC:
(c: foo
), а неc: \ foo
.
-
ос.дорожка.
нормальный корпус
( путь ) Нормализовать регистр имени пути. В Windows конвертируйте все символы в
путь к нижнему регистру, а также преобразовать косую черту в обратную косую черту.
В других операционных системах вернуть путь без изменений.
-
os.path.
нормальный путь
( путь ) Нормализовать путь путем удаления избыточных разделителей и верхнего уровня
ссылки так, чтобыA // B
,A / B /
,A /./ B
иA / foo /../ B
все
становитсяA / B
. Эта манипуляция со строкой может изменить значение пути
содержащий символические ссылки. В Windows он преобразует косую черту в
обратная косая черта. Чтобы нормализовать регистр, используйтеnormcase ()
.Примечание
В системах POSIX в соответствии со стандартом IEEE Std 1003.1 2013 года; 4,13
Разрешение имени пути,
если путь начинается ровно с двух косых черт, первый компонент
следующие за ведущими символами могут интерпретироваться в определяемом реализацией
образом, хотя более двух ведущих символов должны рассматриваться как
одиночный персонаж.
-
os.path.
realpath
( путь , * , strict = False ) Вернуть канонический путь указанного имени файла, исключив любые символические
ссылки, встречающиеся в пути (если они поддерживаются действующим
система).Если путь не существует или встречается цикл символической ссылки, и strict
True
,Возникла ошибка OSError
. Если strict равноFalse
, путь будет
разрешается насколько это возможно, и любой остаток добавляется без проверки
существует ли оно.Примечание
Эта функция имитирует процедуру операционной системы для создания пути
канонический, который немного отличается в Windows и UNIX в отношении
как взаимодействуют ссылки и последующие компоненты пути.API операционной системы делают пути каноническими по мере необходимости, поэтому это не
обычно необходимо вызвать эту функцию.Изменено в версии 3.8: Символические ссылки и переходы теперь разрешены в Windows.
Изменено в версии 3.10: добавлен параметр strict .
-
os.path.
relpath
( путь , start = os.curdir ) Вернуть относительный путь к файлу путь либо из текущего каталога, либо
из необязательного каталога start . Это вычисление пути:
файловая система не используется для подтверждения существования или природы путь или
начало . В WindowsValueError
возникает, когда путь и запускают
находятся на разных дисках.start по умолчанию
os.curdir
.Доступность: Unix, Windows.
-
os.path.
samefile
( путь2 , путь3 ) Вернуть
Истина
, если оба аргумента имени пути относятся к одному и тому же файлу или каталогу.
Это определяется номером устройства и номером i-узла и повышает
исключение, если вызовos.stat ()
для любого пути завершается неудачно.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
Изменено в версии 3.4: Windows теперь использует ту же реализацию, что и все другие платформы.
-
os.path.
sameopenfile
( fp1 , fp2 ) Вернуть
Истина
, если файловые дескрипторы fp1 и fp2 относятся к одному и тому же файлу.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
-
os.path.
samestat
( stat1 , stat2 ) Вернуть
Истина
, если кортежи stat stat1 и stat2 относятся к одному и тому же файлу.
Эти структуры могли быть возвращеныos.fstat ()
,
os.lstat ()
илиos.stat ()
. Эта функция реализует
базовое сравнение, используемоеsamefile ()
иsameopenfile ()
.Доступность: Unix, Windows.
Изменено в версии 3.4: Добавлена поддержка Windows.
-
os.path.
разделить
( путь ) Разделить путь путь на пару,
(голова, хвост)
, где хвост — это
последний компонент имени пути и голова — все, что к этому ведет. В
хвостовая часть никогда не будет содержать косую черту; если путь заканчивается косой чертой, хвост
будет пусто.Если в пути нет косой черты, голова будет пустой. Если
путь пуст, и голова и хвост пусты. Завершающие слэши
удаляется из головы , если это не корень (только одна или несколько косых черт). В
во всех случаяхjoin (голова, хвост)
возвращает путь к тому же месту, что и путь
(но струны могут отличаться). Также см. Функцииdirname ()
и
базовое имя ()
.
-
ос.дорожка.
раздельный привод
( путь ) Разделить путь путь на пару
(диск, хвост)
, где диск либо
точка монтирования или пустая строка. В системах, которые не используют привод
спецификации, диск всегда будет пустой строкой. Во всех случаях привод
будет таким же, как path .
+ tailВ Windows разделяет имя пути на диск / UNC sharepoint и относительный путь.
Если путь содержит букву диска, диск будет содержать все
до двоеточия включительно:>>> splitdrive ("c: / dir") ("c:", "/ dir")
Если путь содержит путь UNC, диск будет содержать имя хоста
и доля, до четвертого разделителя, но не включая:>>> splitdrive ("// хост / компьютер / каталог") ("// хост / компьютер", "/ каталог")
-
os.path.
splitext
(путь ) Разделите путь path на пару
(root, ext)
так, чтобыroot + ext ==
, а расширение ext пустое или начинается с точки и содержит
путь
самый один период.Если путь не содержит расширения, ext будет
''
:>>> splitext ('полоса') ('бар', '')
Если путь содержит добавочный номер, то для этого добавочного номера будет установлено ext ,
включая ведущий период. Обратите внимание, что предыдущие периоды будут проигнорированы:>>> splitext ('foo.bar.exe') ('foo.bar', '.exe')
Начальные точки в базовом имени игнорируются:
>>> splitext ('. Cshrc') ('.cshrc ',' ')
-
os.path.
supports_unicode_filenames
Истинно
, если произвольные строки Unicode могут использоваться в качестве имен файлов (в пределах ограничений
наложено файловой системой).
Модуль ОС
на Python с примерами
Модуль ОС на Python предоставляет функции для взаимодействия с операционной системой. ОС входит в состав стандартных служебных модулей Python. Этот модуль обеспечивает переносимый способ использования функций, зависящих от операционной системы.Модули * os * и * os.path * включают множество функций для взаимодействия с файловой системой.
Обработка текущего рабочего каталога
Рассмотрим Current Working Directory (CWD) как папку, в которой работает Python. Всякий раз, когда файлы вызываются только по имени, Python предполагает, что он запускается в CWD, что означает, что ссылка только на имя будет успешной, только если файл находится в CWD Python.
Примечание: Папка, в которой выполняется сценарий Python, называется текущим каталогом.Это не путь, по которому находится скрипт Python.
Получение текущего рабочего каталога
Для получения местоположения текущего рабочего каталога используется os.getcwd ().
Пример:
Python3
0005000600060006 |
Вывод:
Текущий рабочий каталог: / home / nikhil / Desktop / gfg 99 Текущий рабочий каталогДля изменения текущего рабочего каталога (CWD) os.chdir () используется метод. Этот метод изменяет CWD на указанный путь. В качестве пути к новому каталогу требуется только один аргумент.
Примечание: Текущий рабочий каталог - это папка, в которой работает сценарий Python.
Пример:
Python3
печать ( «Текущий рабочий каталог до» ) ) |
Выход:
Текущий рабочий каталог до C: \ Users \ Nikhil Aggarwal \ Desktop \ gfg Текущий рабочий каталог после C: \ Users \ Nikhil Aggarwal \ Desktop
Создание каталога
В модуле ОС доступны различные методы для создания директора.Это -
Использование os.mkdir ()
Метод os.mkdir () в Python используется для создания каталога с именем path с указанным числовым режимом. Этот метод вызывает FileExistsError, если каталог, который нужно создать, уже существует.
Пример:
Python3
"D: / Pycharm projects /" 86 |
Вывод:
Создан каталог GeeksforGeeks Каталог «Компьютерщиков» создан
Использование os.makedirs ()
Метод os.makedirs () в Python используется для рекурсивного создания каталога. Это означает, что при создании конечного каталога, если какой-либо каталог промежуточного уровня отсутствует, os.makedirs () создаст их все.
Пример:
PYTHON
9000cha4 parent_dir / b " |
Вывод:
Каталог «Никхил» создан Каталог 'c' создан
Вывод файлов и каталогов с помощью Python
os.Метод listdir () в Python используется для получения списка всех файлов и каталогов в указанном каталоге. Если мы не укажем какой-либо каталог, будет возвращен список файлов и каталогов в текущем рабочем каталоге.
Пример:
Python3
|
Вывод:
Файлы и каталоги в '/': ['sys', 'run', 'tmp', 'boot', 'mnt', 'dev', 'proc', 'var', 'bin', 'lib64', 'usr', 'lib', 'srv', 'home', 'etc', 'opt', 'sbin', 'media']
Удаление каталога или файлов с использованием Python
Модуль
OS доказывает различные методы удаления каталогов и файлов в Python.Это -
- Использование os.remove ()
- Использование os.rmdir ()
Использование os.remove ()
Метод os.remove () в Python используется для удаления или удаления пути к файлу . Этот метод не может удалить или удалить каталог. Если указанный путь является каталогом, то метод вызовет ошибку OSError.
Пример: Предположим, что в папке содержатся файлы:
Python3
|
Выход:
56
0007
0004rmdir ()
Метод os.rmdir () в Python используется для удаления или удаления пустого каталога. Ошибка OSError будет вызвана, если указанный путь не является пустым каталогом.
Пример: Предположим, что это каталоги
Python3
Выход:
1. Общие функции os. :
Эта функция дает имя импортированного зависимого модуля от операционной системы. В настоящее время зарегистрированы следующие имена: «posix», «nt», «os2», «ce», «java» и «riscos».
Python3
|
Вывод:
posix
Примечание: При запуске кода здесь может выдаваться другой вывод в разных интерпретаторах, например, posix.
2. os.error: Все функции в этом модуле вызывают ошибку OSError в случае недопустимых или недоступных имен файлов и путей или других аргументов, которые имеют правильный тип, но не принимаются операционной системой. os.error - это псевдоним для встроенного исключения OSError.
Python3
|
Вывод:
Ошибка чтения: GFG.txt
3. os.popen (): Этот метод открывает канал к или от .Возвращаемое значение может быть прочитано или записано в зависимости от того, установлен ли режим «r» или «w».
Синтаксис:
os.popen (command [, mode [, bufsize]])
Параметры mode и bufsize не являются необходимыми параметрами, если они не указаны, для режима по умолчанию используется «r».
Python3
|
Вывод:
Hello
Примечание: Вывод для popen () не будет отображаться, в файл будут внесены прямые изменения.
4. os.close (): Закройте файловый дескриптор fd. Файл, открытый с помощью open (), можно закрыть только с помощью close (). Но файл, открытый с помощью os.popen (), можно закрыть с помощью close () или os.close (). Если мы попытаемся закрыть файл, открытый с помощью open (), с помощью os.close (), Python выдаст TypeError.
Python3
|
Вывод:
Отслеживание (последний звонок последний): Файл "C: \ Users \ GFG \ Desktop \ GeeksForGeeksOSFile.py", строка 6, в os.close (файл) TypeError: требуется целое число (тип _io.TextIOWrapper)
Примечание: Та же ошибка не может быть сгенерирована из-за несуществующего файла или разрешения.
5. os.rename (): Файл old.txt можно переименовать в новый.txt, используя функцию os.rename (). Имя файла изменяется только в том случае, если файл существует и у пользователя есть достаточные полномочия для изменения файла.
Python
|
Выход:
Traceback (последний звонок последний): Файл "C: \ Users \ GFG \ Desktop \ ModuleOS \ GeeksForGeeksOSFile.py ", строка 3, в os.rename (fd, 'New.txt') FileNotFoundError: [WinError 2] Система не может найти указанный файл: 'GFG.txt' -> 'New.txt'
Описание вывода: Имя файла «GFG.txt» существует, поэтому при первом использовании os.rename () файл переименовывается . При повторном вызове функции os.rename () файл «New.txt» существует, а не «GFG.txt»
, поэтому Python выдает FileNotFoundError.
6. os.remove (): Используя модуль Os, мы можем удалить файл в нашей системе с помощью метода remove ().Чтобы удалить файл, нам нужно передать имя файла в качестве параметра.
Python3
9124 |
|
Как и в приведенном выше коде, файл не существует, он выдаст False. Если файл существует, он выдаст нам вывод True.
8. os.path.getsize (): В этом методе python предоставит нам размер файла в байтах. Чтобы использовать этот метод, нам нужно передать имя файла в качестве параметра.
Python3
86 9 |
Вывод:
Размер файла 192 байта.
Автор статьи: Piyush Doorwar . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью, используя write.geeksforgeeks.org или отправьте свою статью по адресу [email protected]. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или если вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS .И чтобы начать свое путешествие по машинному обучению, присоединяйтесь к Машинное обучение - курс базового уровня
Python OS Module
Возможно автоматическое выполнение многих задач операционной системы. Модуль ОС в Python предоставляет функции для создания и удаления каталога (папки), получения его содержимого, изменения и идентификации текущего каталога и т. Д.
Сначала необходимо импортировать модуль os
для взаимодействия с базовой операционной системой.Итак, импортируйте его, используя оператор import os
, прежде чем использовать его функции.
Получение текущего рабочего каталога
Функция getcwd ()
подтверждает, что возвращает текущий рабочий каталог.
>>> импорт ОС
>>> os.getcwd ()
'C: \\ Python37'
Создание каталога
Мы можем создать новый каталог, используя os.mkdir ()
, как показано ниже.
>>> импорт ОС
>>> os.mkdir ("C: \ MyPythonProject")
Будет создан новый каталог, соответствующий пути в строковом аргументе функции. Если вы откроете диск C: \
, вы увидите, что папка MyPythonProject
была создана.
По умолчанию, если вы не укажете весь путь в функции mkdir ()
, она создаст указанный каталог в текущем рабочем каталоге или на диске.Следующее создаст MyPythonProject
в каталоге C: \ Python37
.
>>> импорт ОС
>>> os.getcwd ()
'C: \ Python37'
>>> os.mkdir ("MyPythonProject")
Изменение текущего рабочего каталога
Мы должны сначала изменить текущий рабочий каталог на новый, прежде чем выполнять в нем какие-либо операции. Это делается с помощью функции chdir ()
.Следующее изменение текущего рабочего каталога на C: \ MyPythonProject
.
>>> импорт ОС
>>> os.chdir ("C: \ MyPythonProject") # изменение текущего рабочего каталога
>>> os.getcwd ()
'C: \ MyPythonProject'
Вы можете изменить текущий рабочий каталог на диск. Следующее делает диск C: \
текущим рабочим каталогом.
>>> os.chdir ("C: \\")
>>> os.getcwd ()
'C: \\'
Чтобы установить текущий каталог в качестве родительского, используйте ".."
в качестве аргумента в функции chdir ()
.
>>> os.chdir ("C: \\ MyPythonProject")
>>> os.getcwd ()
'C: \\ MyPythonProject'
>>> os.chdir ("..")
>>> os.getcwd ()
'C: \\'
Удаление каталога
Функция rmdir ()
в модуле ОС удаляет указанный каталог с абсолютным или относительным путем.
Обратите внимание, что для удаления каталога он должен быть пустым.
>>> импорт ОС
>>> os.rmdir ("C: \\ MyPythonProject")
Однако удалить текущий рабочий каталог нельзя.Чтобы удалить его, вы должны изменить текущий рабочий каталог, как показано ниже.
>>> импорт ОС
>>> os.getcwd ()
'C: \\ MyPythonProject'
>>> os.rmdir ("C: \\ MyPythonProject")
PermissionError: [WinError 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом: 'd: \\ MyPythonProject'
>>> os.chdir ("..")
>>> os.rmdir ("MyPythonProject")
Выше MyPythonProject
не будет удален, потому что это текущий каталог.Мы изменили текущий рабочий каталог на родительский с помощью os.chdir ("..")
, а затем удалили его с помощью функции rmdir ()
.
Список файлов и подкаталогов
Функция listdir ()
возвращает список всех файлов и каталогов в указанном каталоге.
>>> импорт ОС
>>> os.listdir ("c: \ python37")
['DLL', 'Док', 'фэнтези-1.py ',' fantasy.db ',' fantasy.py ',' frame.py ',
'gridexample.py', 'include', 'Lib', 'libs', 'LICENSE.txt', 'listbox.py', 'NEWS.txt',
'place.py', 'Players.db', 'python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe',
'sclst.py', 'Скрипты', 'tcl', 'test.py', 'Инструменты', 'tooltip.py', 'vcruntime140.dll',
virat.jpg, virat.py]
Если мы не укажем никакой каталог, будет возвращен список файлов и каталогов в текущем рабочем каталоге.
>>> импорт ОС
>>> os.listdir ()
['.config', '.dotnet', 'python']
Узнайте больше о модулях ОС в документации Python.
Модуль ОС Python
| 30 наиболее полезных методов из модуля ОС Python
Эта статья была опубликована в рамках Блогатона по Data Science.
Введение
функций базовой операционной системы. Модуль python os делает это возможным, он предоставляет нам средства для взаимодействия с базовой операционной системой множеством различных способов и предоставляет нам переносимый способ использования функций, зависящих от операционной системы.
Например, он позволяет нам получить путь к каталогу, с которым мы работаем, получить имена всех файлов и папок в каталоге, создать новый каталог или удалить существующий и так далее.
В этом блоге позвольте нам изучить некоторые полезные методы в модуле ОС, которые могут пригодиться при работе над следующим проектом.
Прежде чем начать, давайте рассмотрим некоторые вещи, которые нам нужно принять к сведению в модуле ОС
Дизайн всех встроенных модулей Python, зависящих от операционной системы, таков, что, пока доступны одни и те же функции, они используют один и тот же интерфейс.
Расширения, характерные для конкретной операционной системы, также доступны через модуль ОС, но их использование неизбежно угрожает переносимости.
Все функции, принимающие путь или имена файлов, принимают как байты, так и строковые объекты в качестве входных данных, и если возвращается путь или имя файла, то результатом также является объект того же типа.
Все функции в модуле python os вызывают ошибку OSError (или ее подклассы), когда встречаются недопустимые или недоступные имена и пути к файлам или другие аргументы, которые имеют правильный тип, но не принимаются операционной системой.
Начнем с импорта модуля
Теперь давайте рассмотрим методы один за другим
1.
os.name :
Дает имя импортированного зависимого модуля операционной системы
2.
os.error :
Это класс ошибки среды для ввода-вывода и OSError. Он возникает, когда какая-либо функция возвращает любую системную ошибку
.
3.
ос.uname () :
Предоставляет информацию о версии, зависящей от системы.
4.
os.ctermid ():
Этот метод возвращает имя файла, соответствующее управляющему терминалу процесса
5.
os.environ :
Это объект сопоставления, представляющий строковое окружение. Это сопоставление фиксируется, когда модуль os изначально импортируется, и изменения, сделанные после этого в среде, не отражаются, за исключением тех, которые сделаны путем прямого изменения os.Окружающая среда.
6.
os.environb :
Это объект сопоставления, представляющий среду в виде байтовых строк. На самом деле это байтовая версия os.environ. os.environ и os.environb синхронизированы. Он доступен тогда и только тогда, когда supports_bytes_environ имеет значение True.
7.
os.getenv (ключ, по умолчанию = Нет) :
Этот метод возвращает значение ключа переменной среды, если он существует, а если он не существует, возвращается значение по умолчанию.
8.
os.getcwd () :
Этот метод возвращает расположение текущего рабочего каталога (CWD). CWD - это папка, в которой работает скрипт python.
9.
os.listdir () :
Этот метод возвращает список всех файлов и папок, находящихся в указанном каталоге. Если каталог не указан, возвращается список файлов и папок внутри CWD.
10.
os.chdir () :
Используется для смены CWD.Он изменяет CWD на указанный путь.
11.
os.mkdir () :
Этот метод создает новый каталог по указанному пути. Если указанный каталог уже существует, возникает ошибка FileExistsError.
12.
os.makedirs () :
Этот метод рекурсивно создает каталог. Это означает, что при создании конечного каталога, если какой-либо из каталогов промежуточного уровня, указанных в пути, отсутствует, метод создает их все.
13.
os.remove () :
Этот метод удаляет путь к файлу. Он не может удалить каталог. Если указан путь к каталогу, возникает ошибка OSError.
14.
os.rmdir () :
Этот метод используется для удаления пустого каталога. Если путь не соответствует пустому каталогу, возникает ошибка OSError.
15.
os.walk () :
Этот метод генерирует имена файлов в дереве каталогов путем обхода дерева либо сверху вниз, либо снизу вверх.os.walk возвращает генератор, который создает кортеж значений (dirpath, dirnames, filenames)
16.
os.path.join () :
Этот метод объединяет различные компоненты пути с помощью ровно одного разделителя каталогов («/»), следующего за каждой непустой частью, за исключением последнего компонента пути. Если последний компонент пути пуст, то в конце ставится разделитель каталогов («/»). Этот метод возвращает строку с объединенным путем.
17.
os.path.basename () :
Этот метод используется для получения базового имени по указанному пути.Метод возвращает строковое значение, представляющее базовое имя указанного пути.
18.
os.path.split () :
Этот метод разделяет имя пути на пару "голова" и "хвост". Здесь хвост - это последний компонент имени пути, а голова - это все, что предшествует ему. Метод возвращает кортеж головы и хвоста указанного пути.
19.
os.path.dirname () :
Этот метод возвращает имя каталога из заданного пути.
20.
os.path.commonprefix () :
Этот метод возвращает префикс самого длинного пути, который является префиксом для всех путей в указанном списке.
21.
os.path.getmtime () :
Этот метод возвращает время последней модификации пути.
22.
os.path.getatime () :
Этот метод возвращает время последнего доступа к пути.
23.
os.path.getctime () :
Этот метод возвращает ctime, который является временем последнего изменения (Unix) или временем создания (Windows) в зависимости от системы.
24.
os.path.abspath () :
Этот метод возвращает нормализованную абсолютную версию указанного пути.
25.
os.path.normpath () :
Этот метод нормализует указанное имя пути, удаляя избыточные разделители и ссылки верхнего уровня.
26.
os.path.normcase () :
Этот метод нормализует регистр указанного пути.
27.
os.path.isfile () :
Этот метод проверяет, соответствует ли указанный путь существующему файлу или нет.Этот метод возвращает логическое значение.
28.
os.path.isdir () :
Этот метод проверяет и сообщает, соответствует ли указанный путь существующему каталогу или нет. Метод возвращает логическое значение.
29.
os.path.isabs () :
Этот метод определяет, является ли данный путь абсолютным или нет.
30.
os.path.exists () :
Этот метод возвращает True для существующих путей.Он возвращает False для неработающих символических ссылок.
Носители, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению автора.
Модуль ОС Python
- PythonForBeginners.com
Обзор
Модуль ОС в Python обеспечивает способ использования функций, зависящих от операционной системы.
Функции, предоставляемые модулем ОС, позволяют взаимодействовать с базовой операционной системой, в которой работает Python - будь то Windows, Mac или Linux.
Вы можете найти важную информацию о вашем местонахождении или о процессе. В этом посте я покажу некоторые из этих функций.
Функции ОС
импорт ОС
Выполнение команды оболочки
os.system ()
Получите среду пользователя
os.environ ()
# Возвращает текущий рабочий каталог.
os.getcwd ()
Вернуть реальный идентификатор группы текущего процесса.
os.getgid ()
Вернуть идентификатор пользователя текущего процесса. os.getuid ()
Возвращает реальный идентификатор текущего процесса.
os.getpid ()
Установите текущую числовую umask и верните предыдущую umask.
о.с.умасск (маска)
Вернуть информацию, идентифицирующую текущую операционную систему.
os.uname ()
Измените корневой каталог текущего процесса на путь.
os.chroot (путь)
Вернуть список записей в каталоге, заданном путем.
os.listdir (путь)
Создайте каталог с именем path в числовом режиме. os.mkdir (путь)
Функция рекурсивного создания каталогов.
os.makedirs (путь)
Удалить (удалить) путь к файлу.
os.remove (путь)
Рекурсивно удалять каталоги.
os.removedirs (путь)
Переименуйте файл или каталог src в dst.
os.rename (src, dst)
Удалить (удалить) путь к каталогу.
os.rmdir (путь)
Рекомендуемый курс обучения Python
Курс: Python 3 для начинающих
Более 15 часов видеоконтента с пошаговыми инструкциями для начинающих.Узнайте, как создавать реальные приложения, и освоите основы.
Учебники по программированию на Python
Модуль ОС Python Учебное пособие
В этом видео мы рассмотрим модуль ОС с Python 3. Основная цель модуля ОС - взаимодействие с вашей операционной системой. Основное применение, которое я нахожу для этого, - создание папок, удаление папок, перемещение папок и иногда изменение рабочего каталога. Вы также можете получить доступ к именам файлов в пути к файлу, выполнив listdir ().Мы не рассматриваем это в этом видео, но это вариант.
Модуль os является частью стандартной библиотеки или stdlib в Python 3. Это означает, что он поставляется с вашей установкой Python, но вы все равно должны его импортировать.
Пример кода с использованием ОС:
импорт ОС
Весь следующий код предполагает, что вы импортировали os. Поскольку это не встроенная функция, вы всегда должны импортировать ее. Однако это часть стандартной библиотеки, поэтому вам не нужно загружать или устанавливать ее отдельно от установки Python.
curDir = os.getcwd () печать (curDir)
Приведенный выше код получит ваш текущий рабочий каталог, следовательно, "cwd".
Для создания нового каталога:
os.mkdir ('новыйДир')
Чтобы изменить имя или переименовать каталог:
os.rename ('новыйДир', 'новыйДир2')
Для удаления каталога:
os.