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 можно смело назвать старым добрым знакомым. В данном разделе мы научились:

  1. Работать со значениями среды;
  2. Менять каталоги и находить тот, который в данный момент является рабочим;
  3. Создавать и удалять папки и файлы;
  4. Переименовывать папки и файлы;
  5. Открывать файл в соответствующей ему программе;
  6. Работать с путями.

И это не полный список того, что можно делать при помощи модуля 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 . Это вычисление пути:
файловая система не используется для подтверждения существования или природы путь или
начало . В Windows ValueError возникает, когда путь и запускают
находятся на разных дисках.

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 () и
базовое имя () .

ос.дорожка. раздельный привод ( путь )

Разделить путь путь на пару (диск, хвост) , где диск либо
точка монтирования или пустая строка. В системах, которые не используют привод
спецификации, диск всегда будет пустой строкой. Во всех случаях привод
+ tail
будет таким же, как path .

В 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

import os

0005000600060006

печать ( «Текущий рабочий каталог:» , cwd)

Вывод:

 Текущий рабочий каталог: / home / nikhil / Desktop / gfg 99 Текущий рабочий каталог  

Для изменения текущего рабочего каталога (CWD) os.chdir () используется метод. Этот метод изменяет CWD на указанный путь. В качестве пути к новому каталогу требуется только один аргумент.

Примечание: Текущий рабочий каталог - это папка, в которой работает сценарий Python.

Пример:

Python3

импорт os

0005

печать ( «Текущий рабочий каталог до» )

печать (os.getcwd ())

печать ()

current_path ()

9s.0004 )

current_path ()

Выход:

 Текущий рабочий каталог до
C: \ Users \ Nikhil Aggarwal \ Desktop \ gfg

Текущий рабочий каталог после
C: \ Users \ Nikhil Aggarwal \ Desktop 

Создание каталога

В модуле ОС доступны различные методы для создания директора.Это -

Использование os.mkdir ()

Метод os.mkdir () в Python используется для создания каталога с именем path с указанным числовым режимом. Этот метод вызывает FileExistsError, если каталог, который нужно создать, уже существует.

Пример:

Python3

импорт os

каталог ee 000 000 00050005000500050007

"D: / Pycharm projects /"

путь = os.path.join (parent_dir, directory)

os.mkdir (path)

print ( «Каталог '% s' создан» % directory)

каталог = «Компьютерщиков»

parent_dir = «D: / Pycharm projects»

mode = = ос.path.join (parent_dir, directory)

os.mkdir (path, mode)

print ( «Каталог '% s' создан» % directory)

86

Вывод:

 Создан каталог GeeksforGeeks
Каталог «Компьютерщиков» создан 

Использование os.makedirs ()

Метод os.makedirs () в Python используется для рекурсивного создания каталога. Это означает, что при создании конечного каталога, если какой-либо каталог промежуточного уровня отсутствует, os.makedirs () создаст их все.

Пример:

PYTHON

импорт os

parent_dir = "D: / Pycharm projects / GeeksForGeeks / Authors"

путь = os.path.join (parent_dir, directory)

os.makedirs (path)

print ( «Каталог '% s' создан» % directory)

каталог = «c»

9000cha4 parent_dir / b "

режим = 0o666

путь = os.path.join (parent_dir, directory)

os.makedirs (путь, режим)

print ( «Каталог '% s' created» )

Вывод:

 Каталог «Никхил» создан
Каталог 'c' создан 

Вывод файлов и каталогов с помощью Python

os.Метод listdir () в Python используется для получения списка всех файлов и каталогов в указанном каталоге. Если мы не укажем какой-либо каталог, будет возвращен список файлов и каталогов в текущем рабочем каталоге.

Пример:

Python3

импорт os

000 путь путь путь ос.listdir (путь)

print ( "Файлы и каталоги в '" , path, "':" )

print _list print _list

Вывод:

 Файлы и каталоги в '/':
['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

import os

000 'файл1.txt '

расположение = "D: / Pycharm projects / GeeksforGeeks / Authors / Nikhil /"

путь 9000s.6 путь 9000s.6 местоположение, файл )

os.remove (путь)

e)

Выход:

56

0007

0004rmdir ()

Метод os.rmdir () в Python используется для удаления или удаления пустого каталога. Ошибка OSError будет вызвана, если указанный путь не является пустым каталогом.

Пример: Предположим, что это каталоги

Python3

import os

ks

родительский = "D: / Pycharm projects /"

путь = os.path.join (родительский, каталог)

os.rmdir (path)

Выход:

1. Общие функции os. :

Эта функция дает имя импортированного зависимого модуля от операционной системы. В настоящее время зарегистрированы следующие имена: «posix», «nt», «os2», «ce», «java» и «riscos».

Python3

импорт os

печать (os.name)

Вывод:

 posix 

Примечание: При запуске кода здесь может выдаваться другой вывод в разных интерпретаторах, например, posix.

2. os.error: Все функции в этом модуле вызывают ошибку OSError в случае недопустимых или недоступных имен файлов и путей или других аргументов, которые имеют правильный тип, но не принимаются операционной системой. os.error - это псевдоним для встроенного исключения OSError.

Python3

import os

try :

'

f = открыть (имя файла, ' rU ' )

текст = f.read ()

f.close ()

за исключением IOError:

печать печать печать + filename)

Вывод:

 Ошибка чтения: GFG.txt 

3. os.popen (): Этот метод открывает канал к или от .Возвращаемое значение может быть прочитано или записано в зависимости от того, установлен ли режим «r» или «w».
Синтаксис:

 os.popen (command [, mode [, bufsize]]) 

Параметры mode и bufsize не являются необходимыми параметрами, если они не указаны, для режима по умолчанию используется «r».

Python3

импорт os

fd = "GFG.txt"

000 файл 000 открыть 000 w ' )

файл .написать ( "Привет" )

файл .close ()

файл = открыть (fd, 'r' текст ) = файл .read ()

печать (текст)

файл = os.popen (fd, ) 'w'

файл .write ( "Hello" )

Вывод:

 Hello 

Примечание: Вывод для popen () не будет отображаться, в файл будут внесены прямые изменения.

4. os.close (): Закройте файловый дескриптор fd. Файл, открытый с помощью open (), можно закрыть только с помощью close (). Но файл, открытый с помощью os.popen (), можно закрыть с помощью close () или os.close (). Если мы попытаемся закрыть файл, открытый с помощью open (), с помощью os.close (), Python выдаст TypeError.

Python3

импорт os

fd = "файл GFG.txt" 000 открыть , 'r' )

текст = файл .read ()

печать (текст)

os.закрыть ( файл )

Вывод:

 Отслеживание (последний звонок последний):
  Файл "C: \ Users \ GFG \ Desktop \ GeeksForGeeksOSFile.py", строка 6, в
    os.close (файл)
TypeError: требуется целое число (тип _io.TextIOWrapper) 

Примечание: Та же ошибка не может быть сгенерирована из-за несуществующего файла или разрешения.

5. os.rename (): Файл old.txt можно переименовать в новый.txt, используя функцию os.rename (). Имя файла изменяется только в том случае, если файл существует и у пользователя есть достаточные полномочия для изменения файла.

Python

импорт os

fd = "GFG.txt"

oxt )

os.rename (fd, 'New.txt' )

Выход:

 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

модуль abstraction us между нами и операционной системой. Когда мы работаем с модулем os , всегда указываем абсолютный путь, в зависимости от операционной системы, код может работать в любой операционной системе, но нам нужно точно изменить путь.Если вы попытаетесь удалить несуществующий файл, вы получите FileNotFoudError .

7. os.path.exists (): Этот метод проверяет, существует ли файл, путем передачи имени файла в качестве параметра. Модуль ОС имеет подмодуль с именем PATH, с помощью которого мы можем выполнять гораздо больше функций.

Python3

import os

os.remove ( «file_name.txt» )

9124

импорт os

результат = os.path.exists ( "имя_файла" )

print (результат)

Как и в приведенном выше коде, файл не существует, он выдаст False. Если файл существует, он выдаст нам вывод True.

8. os.path.getsize (): В этом методе python предоставит нам размер файла в байтах. Чтобы использовать этот метод, нам нужно передать имя файла в качестве параметра.

Python3

7

7

импорт os

размер = os.path.getsize ( "filename" )

print ( "Размер файла:" , size, "байт." )

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.

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

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