Главная страница
Навигация по странице:

  • open()

  • Основы питон. #инструкция объявляющая переменную var и присваивающая ей значение равное 5


    Скачать 92.15 Kb.
    Название#инструкция объявляющая переменную var и присваивающая ей значение равное 5
    АнкорОсновы питон
    Дата04.10.2022
    Размер92.15 Kb.
    Формат файлаdocx
    Имя файлаPR_1_Osnovy_Phyto2n.docx
    ТипДокументы
    #713585
    страница7 из 7
    1   2   3   4   5   6   7

    Работа с файлами


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

     f = open('test.txt', 'r')

    Мы присваиваем переменной результат выполнения команды открытия файла, параметры этой команды - адрес файла, путь до места, где он расположен на компьютере с названием файла(test) и его расширением(.txt), говорящим что он текстовый. Второй параметр 'r' означает, что файл открыт для чтения, то есть мы не сможем вносить изменения в этот файл до тех пор, пока он открыт только для чтения.

    У метода open() существует много аргументов:

    'r' - открытие на чтение (значение по умолчанию)

    'w' - открытие на запись, содержимое файла удаляется и перезаписывается заново, если файла не существует, создается новый

    'x' - открытие на запись, только если файла не существует

    'a' - открытие на дозапись, информация добавляется в конец файла

    'b' - открытие файла в двоичном виде

    't' - открытие в текстовом режиме (значение по умолчанию)

    '+' - открытие на чтение и запись

    Возможно сочетание режимов, например 'rb', чтение в бинарном виде, по умолчанию установлен 'rt'.

    После открытия файла можно прочитать из него информацию, благодаря методу read():

    >>> f = open('test.txt')
    >>> f.read()
    'Python is\nAwesome!.\n\n'

    Также можно прочитать и вывести файл построчно:

    >>> f = open('test.txt')

    >>> for line in f:
    print(line)
    'Python is\n'
    '\n'
    'Awesome\n'
    '\n'

    Записать информацию в файл можно открыв файл на запись:

    >>> f = open('test.txt', 'w')
    >>> for i in range(1, 4):
            f.write(i + '\n')
    1

    3

    По окончании работы с файлом его необходимо закрыть, используя метод close():

    >>> f.close()

    Подключение модулей


    Модулем в Python называется любой файл с программой с расширением .py. То есть любой ваш код, заключенный в файл, является модулем. Когда разрабатывается любая программа, она редко ограничивается одним файлом. Обычно это набор файлов. Для того, чтобы не писать один и тот же код в каждом файле, к каждому файлу можно подключить другой файл. Подключив другой файл (модуль), из него можно достать полезный метод, который может понадобиться.

    Давайте в качестве примера подключим стандартный модуль datetime, чтобы достать оттуда метод datetime.today():

    >>> import datetime
    >>> print(datetime.datetime.today())

    2020-08-13 12:34:49.444292

    Подключив стандартный модуль, мы достали метод получения текущей даты и времени, после чего вызвали его и получили вывод на экран. На языке Python очень много дополнительных библиотек, которые можно доустановить и затем вызвать необходимые методы для улучшения работоспособности своего кода, а зачастую и раскрывая новые возможности. Прежде чем начать работать с новой для себя библиотекой, стоит ознакомиться с ее методами, чтобы эффективно использовать в своей работе.

    Также можно использовать псевдонимы для модулей, чтобы сократить их названия:

    >>> import datetime as m
    >>> print(m.datetime.today())
    2020-08-13 12:34:49.444292

    Можно сделать подключение модуля еще удобнее использовав инструкцию from:

    >>> from datetime import datetime as m
    >>> print(m.today())
    2020-08-13 12:34:49.444292

    Также мы можем достать все методы сразу, использовав символ *:

    >>> from datetime import *

    Регулярные выражения


    В качестве дополнительного материала мы расскажем про регулярные выражения, с которыми рано или поздно вы можете столкнуться.

    Регулярные выражения - выражения для поиска и замены части текста в строке или файле. Для работы с ними необходимо подключить модуль "re" из стандартной библиотеки Python.

    Наиболее часто регулярные выражения используются для поиска в строке, разбиении строк, замены части строк. Вот некоторые методы для работы с регулярными выражениями:

    re.match(шаблон, строка) - ищет заданный шаблон с самого начала строки.

    >>> import re
    >>> print(re.match(r'Hey', 'Hey Hey'))
    # Данные нашлись


    >>> print(re.match(r'Hey', 'hey Hey'))
    None # Данные не нашлись, т.к. строка отличается от шаблона с первого символа

    # Обратите внимание на синтаксис, перед шаблоном ставится латинская буква r

    re.search(шаблон, строка) - ищет заданный шаблон по всей строке, возвращает результат при первом совпадении.

    >>> import re
    >>> print(re.search(r'Hey', 'hey Hey').group(0)) # Добавляем метод group(), чтобы вывести содержимое поиска
    Hey

    re.findall(шаблон, строка) - ищет заданный шаблон и возвращает все совпадения в виде списка.

    >>> import re
    >>> print(re.findall(r'Hey', 'hey Hey Hey Hey'))
    ['Hey', 'Hey', 'Hey']

    re.split(шаблон, строка) - разделяет строку по заданному шаблону

    >>> import re
    >>> print(re.split(r'y', 'hey Hey Hey Hey'))

    ['he', ' He', ' He', ' He', '']

    re.sub(шаблон, замена, строка) - находит шаблон в строке и производит замену

    >>> import re
    >>> print(re.sub(r'Hey', '?', 'hey Hey Hey Hey'))
    hey ? ? ?

    re.compile(шаблон) - позволяет собирать регулярное выражение в отдельный объект для последующего использования

    >>> ex_str = re.compile('Hey')
    >>> result = ex_str.findall('hey Hey Hey')
    >>> print result

    ['Hey', 'Hey']


    >>> result2 = ex_str.findall('Hey')
    >>> print result2
    ['Hey']

    Перейдем к самой интересной части - представьте, что вам необходимо произвести чтение "грязного" файла и убрать из него все лишнее, но при этом вы не можете сказать точно, что необходимо убрать. Эту задачу можно решить, используя специальные символы:

    Оператор

    Значение

    Пример

    .

    Один любой символ, кроме символа переноса строки \n

    >>> print(re.findall(r'h..', 'hey Hey Hey Hey'))

    hey

    ?

    0 или 1 вхождение шаблона слева

    >>> print(re.findall(r'h?', 'hey Hey Hey Hey'))

    ['h', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']

    +

    1 и более вхождений шаблона слева

    >>> print(re.findall(r'H.+', 'hey Hey Hey Hey'))

    ['Hey Hey Hey']

    >>> print(re.findall(r'H+', 'hey Hey Hey Hey'))

    ['H', 'H', 'H']

    *

    0 или более вхождений слева

    >>> print(re.findall(r'H*', 'hey Hey Hey Hey'))

    ['', '', '', '', 'H', '', '', '', 'H', '', '', '', 'H', '', '', '']

    \w

    Любая цифра или буква (\W — все, кроме буквы или цифры)

    >>> print(re.findall(r'\w', 'hey Hey Hey Hey'))

    ['h', 'e', 'y', 'H', 'e', 'y', 'H', 'e', 'y', 'H', 'e', 'y']

    \d

    Любая цифра [0-9] (\D — все, кроме цифры)

    >>> print(re.findall(r'\d', 'hey Hey1 Hey2 Hey3'))

    ['1', '2', '3']

    \s

    Любой пробельный символ (\S — любой непробельный символ)

    >>> print(re.findall(r'\s', 'hey Hey1 Hey2 Hey3'))

    [' ', ' ', ' ']

    \b

    Граница слова

    >>> print(re.findall(r'\b\w', 'hey, Hey1, Hey2, Hey3'))

    ['h', 'H', 'H', 'H']

    [..]

    Один из символов в скобках ([^..] — любой символ, кроме тех, что в скобках)

    >>> print(re.findall(r'[Hy]', 'hey, Hey1, Hey2, Hey3'))

    ['y', 'H', 'y', 'H', 'y', 'H', 'y']

    \

    Экранирование специальных символов (\. означает точку или \+ — знак «плюс»)

    >>> print(re.findall(r'\.', 'hey. Hey1. Hey2. Hey3'))

    ['.', '.', '.']

    ^ и $

    Начало и конец строки соответственно

    >>> print(re.findall(r'..$', 'hey. Hey1. Hey2. Hey3'))

    ['y3']

    {n,m}

    От n до m вхождений ({,m} — от 0 до m)

    >>> print(re.findall(r'\w{2}', 'hey. Hey1. Hey2. Hey3'))

    ['he', 'He', 'y1', 'He', 'y2', 'He', 'y3']

    a|b

    Соответствует a или b

    >>> print(re.findall(r'h|3', 'hey. Hey1. Hey2. Hey3'))

    ['h', '3']

    ()

    Группирует выражение и возвращает найденный текст

    >>> print(re.findall(r'(\w\w\w)', 'hey. Hey1. Hey2. Hey3\n'))

    ['hey', 'Hey', 'Hey', 'Hey']

    \t,\n,\r

    Символ табуляции, новой строки и возврата каретки соответственно

    >>> print(re.findall(r'\n', 'hey. Hey1. Hey2. Hey3\n'))

    ['\n']

    Давайте напишем программу, которая найдет все ip адреса таких неавторизованных юзеров:

    import re
    logfile = open('logfile.txt', 'r')
    for string in logfile:
        if re.findall(r'Did', string):
            print(re.findall(r'\d+\.\d+\.\d+\.\d+', string))

    Мы построчно читаем файл и ищем строки, в которых есть сочетание 'Did'. В каждой такой строке мы находим ip адрес. Он состоит из 4 наборов цифр, разделенных точками между собой.

    Контрольные вопросы


    1. Как объявляются переменные?

    2. Какую роль играют отступы в написании программы? 

    3. Какие основные типы данных существуют в Python?

    4. Какие типы операторов существуют в Python?

    5. Для чего нужен оператор elif?

    6. Какие способы объявить цикл существуют в Python?

    7. Какие численные типы данных есть в Python?

    8. Назовите основные операции, которые можно исполнять со строками 

    9. Что такое списки?

    10. Что такое кортежи?

    11. Что такое словари?

    12. Чем множества отличаются от списков?

    13. Какие типы функций существуют в Python?

    14. Какие аргументы существуют для метода open()?

    15. Для чего нужно подключать модули к проекту?
    1   2   3   4   5   6   7


    написать администратору сайта