Работа с файлами в 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 • Директория • Копировать • Модуль • Удалить • Файл