Don’t learn to code. Code to learn!
Введение в Python
- Python — Обзор
- Основы синтаксиса Python
- Операторы в Python
- Типы данных в Python
- Условные конструкторы в Python
- Циклы в Python
- Функции в Python
- Функциональное программирование в Python
- ООП в Python
- Модули в Python
- Работа с файлами в Python
- Обработка исключительных ситуаций в Python
До теперь мы работали только с объектами, сохраненными в оперативной памяти компьютера. То есть после завершения работы программы все наши действия удалялись. Сегодня мы научимся работать с файлами в Python, то есть сохранять состояние программы в файле на жестком диске.
- Открытие и закрытие файла.
- Список режимов доступа к файлу.
- Атрибуты файлового объекта.
- Запись в файл.
- Чтение из файла.
- Позиция указателя в файле.
- Добавление в файл.
- Расширенная работа с файлами.
- Приложение-пример.
Открытие и закрытие файла в Python.
Перед тем как прочесть и записать что-либо в файл, его следует открыть. Чтобы открыть файл в Python используется встроенная функция open(). При вызове, эта функция создает объект типа файл, с которым в дальнейшем можно работать.
На что способен PYTHON
Синтаксис функции open() в Python.
my_file = open(имя_файла [, режим_доступа][, буферизация])
имя_файла: строка, содержащая имя файла с расширением. Например, «my_file.txt».
режим_доступа: строка, которой мы указываем для чего открывается файл: для чтения, записи, добавления информации, и т.д. Например, «w». По умолчанию файл открывается для чтения — «r».
буферизация: Целое число. Если значение аргумента указано 0 — файл открывается без буферизации, 1 с построчной буферизацией, больше одного процесс буферизации выполняется с указанным размером буфера. Отрицательное число — разер буфера будет равен системному.
Список режимов доступа к файлу в Python.
r | Открывает файл только для чтения. Указатель стоит в начале файла. |
rb | Открывает файл для чтения в двоичном формате. Указатель стоит в начале файла. |
r+ | Открывает файл для чтения и записи. Указатель стоит в начале файла. |
rb+ | Открывает файл для чтения и записи в двоичном формате. Указатель стоит в начале файла. |
w | Открывает файл только для записи. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует. |
wb | Открывает файл для записи в двоичном формате. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует. |
w+ | Открывает файл для чтения и записи. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует. |
wb+ | Открывает файл для чтения и записи в двоичном формате. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует. |
a | Открывает файл для добавления информации в файл. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует. |
ab | Открывает файл для добавления в двоичном формате. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует. |
a+ | Открывает файл для добавления и чтения. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует. |
ab+ | Открывает файл для добавления и чтения в двоичном формате. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует. |
Атрибуты файлового объекта в Python.
Как только файл был открыт и у вас появился файловый объект, вы можете получить следующую информацию о нем:
Как сделать, чтобы окно черепашки turtle не закрывалось после выполнения программы
file.closed | Возвращает True если файл был закрыт. |
file.mode | Возвращает режим доступа, с которым был открыт файл. |
file.name | Возвращает имя файла. |
file.softspace | Возвращает False если при выводе содержимого файла следует отдельно добавлять пробел. |
my_file = open(«some.txt», «w») print(«Имя файла: «, my_file.name) print(«Файл закрыт: «, my_file.closed) print(«В каком режиме файл открыт: «, my_file.mode) print(«Пробелы: «, my_file.softspace)
Закрытие файла в Python. Метод close().
Метод файлового объекта close() автоматически закрывает файл, при этом теряется любая несохраненная информация. Работать с файлом (читать, записывать) после этого нельзя.
- Лямбды для для “вкладывания” функции в функцию
def myfunc(): n = 2 return lambda a: a * n
- Избегание переназначения переменных и использование локальных переменных в функциях.
var = ‘строковая переменная’ def some_func(): pass var = 123
- Ограничение использований циклов for
- Использование библиотек, таких как numpy или pandas, для работы с матрицами и таблицами.
import pandas as pd data = [] for row in some_function_that_yields_data(): data.append(row) df = pd.DataFrame(data)
- Использование кортежей вместо списков.
a = tuple(‘hello, world!’)
Первая мысль при знакомстве с PEP8: “Порядок – это хорошо. Со временем, наверное, смогу разучить это”. То есть о подспудной пользе стандартов задумываться не приходится без необходимости. Теперь же, спустя семь лет, периодически сталкиваясь с проблемой “замороженного ноутбука” я понимаю, что даже такие крупицы, как “писать код по стандарту PEP” складываются в итоге в читаемый оптимальный код.
Список не ограничивается этими пунктами. В каждом из этих случаев замеры скорости исполнения покажут выигрыш в скорости исполнения. Проверено. Обычно этот способ ускорения сопровождается напарником – профилированием кода.
Профилирование кода
Это сбор характеристик работы программы, таких как время выполнения отдельных фрагментов, число верно предсказанных условных переходов, число кэш-промахов и т. д. с помощью инструментов вроде cProfile или line_profiler.
import cProfile import numpy as np cProfile.run(«20+10»)
Вывод будет такой:
3 function calls in 0.000 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 :1( ) 1 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000
JIT (Just-In-Time) компилятор
Python – интерпретируемый язык, код выполняется построчно и в машинный код не переводится. Интерпретация медленнее по сравнению с компиляцией (C или C++). Однако с использованием JIT-компиляторов можно достичь приближенной к ним скорости.
Такие инструменты анализируют и оптимизируют в реальном времени, что позволяет улучшить производительность. Широкое признание в сообществе получили компиляторы Numba и Cython.
Источник: news.myseldon.com