Работа с файлами в Python, модуль os

19.02.2018

Теги: PythonДиректорияКопироватьМодульУдалитьФайл

Модуль позволяет работать с файлами и папками. Русские названия файлов и папок возвращаются и принимаются всеми функциями этого модуля в кодировке UTF-8, поэтому необходимо использовать функции для перекодирования строк — методы decode и encode.

Свойства и методы:

  • os.sep
  • os.name
  • os.environ
  • os.getenv()
  • os.putenv()
  • os.getcwd()
  • os.chdir()
  • os.mkdir()
  • os.makedirs()
  • os.rename()
  • os.renames()
  • os.rmdir()
  • os.removedirs()
  • os.remove() или os.unlink()
  • os.listdir()
  • os.walk()
  • os.system()
  • os.link()
  • os.symlink()
  • os.path

Для использования любого из методов, нужно импортировать модуль os:

import os

Свойство os.name содержит имя операционной системы, доступные варианты: 'posix', 'nt', 'mac', 'os2', 'ce', 'java'.

>>> os.name
'nt'

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

>>> os.environ
environ({'HOME': 'C:\\Users\\Evgeniy', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Evgeniy',
'OS': 'Windows_NT', 'PATH': 'C:\\python\\Scripts\\;C:\\python\\;C:\\WINDOWS\\system32;C:\\WINDOWS',
'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\WINDOWS', 'TEMP': 'C:\\Users\\Evgeniy\\AppData\\Local\\Temp',
'TMP': 'C:\\Users\\Evgeniy\\AppData\\Local\\Temp', 'USERDOMAIN': 'TKMCOMP', 'USERDOMAIN_ROAMINGPROFILE': 'TKMCOMP',
'USERNAME': 'Evgeniy', 'USERPROFILE': 'C:\\Users\\Evgeniy', 'WINDIR': 'C:\\WINDOWS'})

Метод os.getenv() возвращает значение переменной окружения, метод os.putenv() устанавливает значение переменной окружения.

>>> os.getenv('PATH')
'C:\\python\\Scripts\\;C:\\python\\;C:\\WINDOWS\\system32;C:\\WINDOWS'

Метод os.getcwd() возвращает текущую рабочую директорию.

>>> os.getcwd()
'C:\\python'

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

>>> os.chdir('C:\\Windows\\System32')
>>> os.getcwd()
'C:\\Windows\\System32'

Метод os.mkdir() создаёт директорию, выдает OSError, если директория существует.

>>> os.mkdir('C:\\some-dir')

Метод os.makedirs() создаёт директорию, создавая при этом промежуточные директории.

>>> os.makedirs('C:\\some-dir\\other-dir')

Метод os.rename() переименовывает файл или директорию. Метод os.renames() служит тем же целям, но позволяет создавать промежуточные директории.

>>> os.mkdir('C:\\some-dir')
>>> os.rename('C:\\some-dir', 'C:\\other-dir')
>>> os.chdir('C:\\example')
>>> os.listdir()
['file.txt']
>>> os.renames('file.txt', 'some-dir\\some-file.txt')
>>> os.listdir()
['some-dir']
>>> os.chdir('some-dir')
>>> os.listdir()
['some-file.txt']

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

>>> os.chdir('C:\\example')
>>> os.listdir()
['file.txt']
>>> os.renames('C:\\some-dir')

Метод os.remove() удаляет файл.

>>> os.remove('C:\\some-dir\\some-file.txt')

Метод os.listdir() возвращает список файлов и директорий.

>>> os.listdir('C:\\wamp\\mysql')
['bin', 'COPYING', 'docs', 'include', 'lib', 'my.ini', 'README', 'share']

Метод os.walk() возвращает объект-генератор. Из полученного объекта можно получить кортежи для каждого каталога в файловой иерархии. Каждый кортеж в коллекции содержит:

  • Абсолютный адрес очередного каталога (строка)
  • Имена подкаталогов текущего каталога (список)
  • Имена (без адреса) файлов данного каталога
tree = os.walk('C:\\wamp\\php56')
for item in tree:
    print(item)
('C:\\wamp\\php56', ['dev', 'ext', 'extras', 'lib'], ['deplister.exe', 'glib-2.dll', 'gmodule-2.dll', ...])
('C:\\wamp\\php56\\dev', [], ['php5ts.lib'])
('C:\\wamp\\php56\\ext', [], ['php_bz2.dll', 'php_com_dotnet.dll', 'php_curl.dll', 'php_enchant.dll', ...])
('C:\\wamp\\php56\\extras', ['ssl'], [])
('C:\\wamp\\php56\\extras\\ssl', [], ['openssl.cnf'])
('C:\\wamp\\php56\\lib', ['enchant'], [])
('C:\\wamp\\php56\\lib\\enchant', [], ['libenchant_ispell.dll', 'libenchant_myspell.dll'])
for current, subdirs, files in os.walk('C:\\wamp\\php56'):
    print('Текущая директория: ' + current)
    # цикл по поддиректориям текущей директории
    for subdir in subdirs:
        print('  Дочерняя директория: ' + subdir)
    # цикл по файлам текущей директории
    for file in files:
        print('  Файл в директории: ' + file)
Текущая директория: C:\wamp\php56
  Дочерняя директория: dev
  Дочерняя директория: ext
  Дочерняя директория: extras
  Дочерняя директория: lib
  Файл в директории: deplister.exe
  Файл в директории: glib-2.dll
  Файл в директории: gmodule-2.dll
  .....
Текущая директория: C:\wamp\php56\dev
  Файл в директории: php5ts.lib
Текущая директория: C:\wamp\php56\ext
  Файл в директории: php_bz2.dll
  Файл в директории: php_com_dotnet.dll
  Файл в директории: php_curl.dll
  .....
Текущая директория: C:\wamp\php56\extras
  Дочерняя директория: ssl
Текущая директория: C:\wamp\php56\extras\ssl
  Файл в директории: openssl.cnf
Текущая директория: C:\wamp\php56\lib
  Дочерняя директория: enchant
Текущая директория: C:\wamp\php56\lib\enchant
  Файл в директории: libenchant_ispell.dll
  Файл в директории: libenchant_myspell.dll

Метод os.system() исполняет системную команду, возвращает код её завершения. Метод os.link() создает жесткую ссылку, os.symlink() создает символическую ссылку.

Модуль os.path

Модуль os.path встроен в модуль os и позволяет работать с путями к файлам и папкам. Основные свойства и методы:

  • os.path.sep — разделитель имен директорий в пути
  • os.path.abspath() — преобразует относительный путь в абсолютный
  • os.path.isabs() — возвращает True, если путь абсолютный
  • os.path.relpath(path, start) — возвращает относительный путь от start к path
  • os.path.basename() — возвращает имя файла (или директории)
  • os.path.dirname() — возвращает путь к файлу (или директории)
  • os.path.exists() — возвращает True, если файл (или директория) существует
  • os.path.isdir() — возвращает True, если это директория
  • os.path.isfile() — возвращает True, если это файл
  • os.path.getsize() — возвращает размер файла в байтах
  • os.path.join() — возвращает путь доступа, полученный конкатенацией аргументов
  • os.path.split() — возвращает кортеж (os.path.dirname(), os.path.basename())

Поиск: Python • Директория • Копировать • Модуль • Удалить • Файл

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.