Python // Работаем с файловой системой
Модуль os в Python предназначен для взаимодействия программы с операционной системой, в частности для управления файлами. Иногда нужно автоматизировать какие-то действия с файлами, например создать автоматический установщик, или программу делающую бэкап документов на второй раздел диска. Вариантов применения работы с файлами - масса. Рассмотрим основные команды модуля:
Чтобы начать работу сперва нужно импортировать модуль os:
import os
Получаем путь к текущей папке в которой происходит работа программы. Эта папка не обязательно должна совпадать с той папкой из которой запущено приложение, можно и поменять её на нужную нам.
print (os.getcwd()) # возвращает путь к текущей рабочей папке
os.chdir('D:/') # устанавливает путь к текущей рабочей папке
Попробуем получить список файлов в текущей директории с расширением '.py'. Для этого используем модули os и fnmatch.
import os
import fnmatch
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.py'):
print (file)
Удалим какой-либо файл, который существует на диске:
import os
(os.remove('D:/test.txt'))
Переименуем файл:
import os
os.rename('sample.txt','sample1.txt')
Давайте создадим папку по указанному пути и сразу же удалим её. Здесь мы дополнительно подключили модуль shutil.
import os
import shutil
os.makedirs('D:/test/test2') # Создаёт все папки по указанному пути
shutil.rmtree('D:/test') # Удаляет папку
Получим размер какого-нибудь файла, а также дату его модификации.
import os.path
from datetime import datetime # для преобразования даты в приемлемый формат
path = 'C:/Windows/notepad.exe'
size = os.path.getsize(path) # размер файла в байтах
ksize = size//1024 # размер в килобайтах
atime = os.path.getatime(path) # дата последнего доступа в секундах с начала эпохи
mtime = os.path.getmtime(path) # дата последней модификации в секундах с начала эпохи
print ('Размер: ', ksize, ' KB')
print ('Дата последнего использования: ', datetime.fromtimestamp(atime))
print ('Дата последнего редактирования: ', datetime.fromtimestamp(mtime))
Откроем какой-либо файл с помощью программы которой этот файл открывается в системе:
import os
os.startfile(r'C:/Program Files/Mozilla Firefox/firefox.exe')
Напечатаем список всех файлов содержащихся внутри папок по определенному пути (учитывая вложенные подкаталоги)
import os
for root, dirs, files in os.walk('C:/Users/Public/'):
for name in files:
fullname = os.path.join(root, name)
print(fullname + '\n')
Ниже приведен список еще некоторых полезных команд:
os.path.basename('D:/test/1/file.txt') # Возвращает имя объекта (файл / папка) указанного пути
os.path.dirname('D:/test/folder/fld/file.txt') # Возвращает родительский путь к объекту пути (первая часть os.path.split)
os.path.splitext('D:/test/folder/fld/file.txt') # Разделяет путь на путь и расширение файла
os.path.exists('D/1/temp.txt') # существует ли путь?
os.path.isfile('D/test1.txt') # Является ли объект пути обычным файлом? (существующим)
os.path.isdir('D:/test') # Является ли объект пути обычной папкой? (существующей)