голосование
BASH
PHP
Javascript
HTML
Программы
Firebird
Майнинг
PostgreSQL
Хостинг
Железо
Ресурсы
GIT
SEO
Oracle
Python
Мобильные технологии
Ремонт
Mercurial
Заработок на сайте
Docker
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Модуль os Python

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


# -*- coding: utf-8 -*-
import os

#выводим списком все переменные
arr = dict(os.environ)
print(arr)
'''
вы можете проверить железо вашего пользователя. 
Например архитектуру процессора. 
'''
print('Операционная система:', arr['OS'])


#название операционной системы
print(os.name)
'''
вывод: nt
nt - виндовс
'''

проверка прав доступа к файлу или папке.


#os.F_OK - проверка наличия пути
res = os.access(r'C:\Users\Егор\AppData\Local\Programs\Python', os.F_OK)
print ('проверка наличия пути:',res)
'''
вывод:
проверка наличия пути: True
'''

#os.R_OK - проверка на возможность чтения
res = os.access(r'C:\Users\Егор\AppData\Local\Programs\Python', os.R_OK)
print ('проверка на возможность чтения:',res)
'''
вывод:
проверка на возможность чтения: True
'''

#os.W_OK - проверка на возможность записи
res = os.access(r'C:\Users\Егор\AppData\Local\Programs\Python', os.W_OK)
print ('проверка на возможность записи:',res)
'''
вывод:
проверка на возможность записи: True
'''

#os.X_OK - проверка на возможность выполнения
res = os.access(r'C:\Users\Егор\AppData\Local\Programs\Python', os.X_OK)
print ('проверка на возможность выполнения:',res)
'''
вывод:
проверка на возможность выполнения: True
'''

для смены директории поможет функция


#смена текущей директории.
os.chdir(r'D:\test')
cur_dir = os.path.abspath(os.curdir)
print(cur_dir)
'''
вывод:
D:\test
'''

cur_dir = os.getcwd()
print(cur_dir)
'''
вывод:
D:\test
'''

Вы можете менять права доступа к файлу. Обратите внимание на то, что на операционной системе виндовс нельзя заблокировать просмотр файла. Вы не сможете изменить режим записи файла. В линукс довольно продвинутая файловая система. Там команда chmod имеет массу настроек. Смотрите статью как изменить права у файла при помощи chmod BASH


#Изменяет права доступа файла.
os.chmod(r'D:\test', 666)

Вы можете вывести названия всех файлов в виде списка. Функция listdir возвращает список имен файлов и папок в указанной папке.


arr = os.listdir(r'D:\test')
print(arr)
'''
вывод:
['python.txt', 'readme.txt']
'''

os.mkdir(path[, access=777]) cоздаёт папку по указанному пути


os.mkdir(r'D:\test\folder1', 777)
#Параметры:
#path (str) – путь к каталогу
#access – права доступа
print(os.listdir(r'D:\test'))
'''
вывод:
['folder1', 'python.txt', 'readme.txt']
'''

Аналогичен функции mkdir? но автоматический создает промежуточные папки. Вы можете создать массу промежуточных папок. В примере ниже создаются недостающие папки: folder, f1, f2


os.makedirs(r'D:\test\folder\f1\f2', 777)
print(os.listdir(r'D:\test'))
'''
вывод:
['folder', 'folder1', 'python.txt', 'readme.txt']
'''

Функция remove() позволяет удалить файл. Параметры: str – путь к файлу. Исключение: WindowsError – если файл удалить нельзя.


os.remove(r'D:\test\readme.txt')
print(os.listdir(r'D:\test'))
'''
вывод:
['folder', 'folder1', 'python.txt']
'''

Если вы ошибётесь с названием файла, то появится ошибка FileNotFoundError. Для перехвата ошибки используйте перехват исключений try except. Смотрите статью выброс и перехват исключений в Python.


try:
    os.remove(r'D:\test\readme.txt')
    print(os.listdir(r'D:\test'))
except FileNotFoundError as msg:
    print('неправильный путь к файлу:', msg)
'''
неправильный путь к файлу: [WinError 2] 
Не удается найти указанный файл: 'D:\\test\\readme.txt'
'''

rmdir(path) удаляет папку по указанному пути. Параметры: path (str) – путь к каталогу. Обратите внимание на то что удаление происходит только если папка пустая. Вы должны очистить папку и только потом удалять папку


os.rmdir(r'D:\test\folder1')
print(os.listdir(r'D:\test'))

'''
removedirs(path) - Аналогичен функции rmdir, но автоматический 
удаляет все родительские пустые папки 
на операционной системе виндовс эта функция странно работает. 
Пришлось удалить все дочерние файлы 
и только потом удалять родительскую папку.  
'''
#os.removedirs(r'D:\test\folder')
print(os.listdir(r'D:\test'))
'''
вывод:
['python.txt']
'''

os.rename(<старый файл/директория>, <новый файл/директория>). Функция os.rename() применяется тогда, когда нужно переименовать файл или папку. Посмотрите на пример.


os.rename(r'D:\test\python.txt', r'D:\test\python3.txt')
print(os.listdir(r'D:\test'))
'''
вывод:
['python3.txt']
'''

Метод startfile() позволяет нам «запустить» файл в привязанной к нему программе. Другими словами, мы можем открыть файл в соответствующей программе. Вы запускаете скрипт и открывается файл PDF. Он открывается в программе Adobe Reader. Происходит запуск файла как будто вы щелкнули двойным щелчком по файлу. Посмотрите на пример.


os.startfile(r'D:\test\yazyk_programmirovaniya_python.pdf')
'''
после того как скрип отработает, пройдёт несколько секунд и откроется файл 
в соответствующей программе.
'''

Метод os.walk() дает нам возможность для итерации на корневом уровне пути. Это значит, что мы можем назначить путь к этой функции и получить доступ ко всем её подкаталогам и файлам.


arr = os.walk(r'D:\test')
print(list(arr))
'''
вывод:
[('D:\\test', ['folder1'], ['python3.txt',\
 'Yazyk_programmirovaniya_Python.pdf']), 
('D:\\test\\folder1', ['folder2'], []), ('D:\\test\\folder1\\folder2', [], [])]
'''

В этом примере мы выведем циклом все файлы и каталоги


path = r'D:\test'
for root, dirs, files in os.walk(path):
    print('root:', root, 'dirs:', dirs, 'files:', files)
'''
вывод:
root: D:\test dirs: ['folder1'] files: ['python3.txt',\
 'Yazyk_programmirovaniya_Python.pdf']
root: D:\test\folder1 dirs: ['folder2'] files: []
root: D:\test\folder1\folder2 dirs: [] files: []
'''

В этом примере мы немного изменим цикл и выведем в виде дерева список файлов.


for root, dirs, files in os.walk(path):
    print(root)
    for _dir in dirs:
        print(_dir)

    for _file in files:
        print('|_',_file)
'''
вывод:
D:\test
folder1
|_ python3.txt
|_ Yazyk_programmirovaniya_Python.pdf
D:\test\folder1
folder2
D:\test\folder1\folder2
'''

os.path Подмодуль os.path модуля os имеет массу возможностей. Ознакомимся со следующими функциями:

  • basename - вернет название файла пути
  • dirname - возвращает только часть каталога пути
  • exists - проверяет существует ли файл, или нет. Необходимо указать ему путь
  • isdir and isfile - тестируют присутствие или отсутствие файлов или папок на тех или иных путях. Однако, isdir проверяет только пути к папкам, а isfile к файлам.
  • join - позволяет вам совместить несколько путей при помощи присвоенного разделителя. К примеру, в Windows, в роли разделителя выступает бэкслэш (косая черта, указывающая назад), однако в Linux функция разделителя присвоена косой черте, указывающей вперед (forward slash)
  • split - разъединяет путь на кортеж, который содержит и файл и каталог


#Функция basename вернет название файла пути.
filepath = os.path.basename(r'D:\Egor\обучение\python\script\module\os\os.py')
print('запускаемый скрипт:', filepath)
'''
вывод:
запускаемый скрипт: os.py
'''

Функция dirname возвращает только часть каталога пути.


filepath = os.path.dirname(r'D:\Egor\обучение\python\script\module\os\os.py')
print('путь до скрипта:', filepath)
'''
вывод:
путь до скрипта: D:\Egor\обучение\python\script\module\os
'''

Функция exists говорит нам, существует ли файл, или нет. Все что вам нужно, это указать ему путь.


filepath = os.path.exists(r'D:\Egor\обучение\python\script\module\os\os.py')
print('скрипт существует:', filepath)
'''
вывод:
скрипт существует: True
'''

Метод isdir связан с методом exists, так как он также тестируют присутствие или отсутствие файлов или папок на тех или иных путях. Однако, isdir проверяет только пути к папкам, Если вам нужно проверить путь, и не важно, папка это или файл, проще будет воспользоваться методом exists.


dir = os.path.isdir(r'D:\test')
print('такая папка существует:', dir)
'''
вывод:
такая папка существует: True
'''

Методы isfile проверяет путь к файлам.


dir = os.path.isfile(r'D:\test\python3.txt')
print('такой файл существует:', dir)
'''
вывод:
такой файл существует: True
'''

Метод join позволяет вам совместить несколько путей при помощи присвоенного разделителя. К примеру, в Windows, в роли разделителя выступает бэкслэш (косая черта, указывающая назад), однако в Linux функция разделителя присвоена косой черте, указывающей вперед (forward slash)


path = os.path.join(r'D:\test', 'python3.txt')
print(path)
'''
Вывод:
D:\test\python3.txt
'''

Метод split разъединяет путь на кортеж, который содержит каталог и файл.


arr_path = os.path.split(r'D:\test\python3.txt')
print(arr_path)
'''
вывод:
('D:\\test', 'python3.txt')
'''

обратите внимание на то, что функция не проверяет файл по типу. Если файл не указан, то функция вернёт предпоследнюю и последнюю директорию. В моём случае вернулись название диска и название последней папки.


arr_path = os.path.split(r'D:\test')
print(arr_path)
'''
вывод:
('D:\\', 'test')
'''

Вы можете передать значения сразу двум переменным. Функция возвращает кортеж из двух элементов.


dir_name, file_name = os.path.split(r'D:\test\python3.txt')
print('папка:', dir_name, 'название файла:', file_name)
'''
вывод:
папка: D:\test название файла: python3.txt
'''
просмотры: 5397, уровень: лёгкий уровень, рейтинг: 3, дата: 2017-09-17 22:23:12
проголосовать:

Комментарии:






поиск
реклама
банеры
сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/pingadmin мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/domains домен RU домен RU всего за 99 рублей