В последние годы Python стал одним из самых популярных языков программирования. Это произошло не случайно, а в основном благодаря:
- Его легко изучать и использовать — Python имеет англоязычный синтаксис, что облегчает чтение и понимание кода.
- Python свободен — Python поставляется под лицензией OSI с открытым исходным кодом. Это делает его бесплатным для использования и распространения. А кто не любит бесплатные вещи?
- Повышает производительность — Мы уже упоминали, что Python — очень простой язык. Его простота позволяет разработчикам сосредоточиться на решении проблемы, тратя меньше времени на понимание синтаксиса или поведения языка программирования, что повышает производительность.
- Поддержка библиотек — благодаря широкому применению стандартная библиотека Python огромна, в ней можно найти практически все функции, необходимые для решения вашей задачи. А если вы не найдете, внешние библиотеки Python насчитывают более 200 000+ пакетов.
- переносимость — Вы можете запускать программы на Python на разных платформах (даже на смартфоне), не меняя ни строчки кода, чтобы приспособиться к проблемам зависимости от платформы. Вы пишете только один раз и запускаете ее в любом месте.
Проанализировав все вышеперечисленные плюсы, я могу с уверенностью сказать, что Python подходит для всех. Это отличный выбор как для новичков, так и для профессионалов. Вы все еще не верите мне!!! Хорошо, давайте проверим, в каких областях вы можете применить язык программирования Python:
- Большие данные и наука о данных,
- искусственный интеллект, машинное обучение и нейронные сети,
- физические вычисления (компьютер Raspberry Pi) и встраиваемые приложения
- Веб-разработка
- Скрипты и автоматизация
- Разработка игр
- Настольные графические интерфейсы
- Приложения для веб-скрапинга
- Бизнес-приложения
- Аудио- и видеоприложения
Цель этой статьи — не продать Python, язык практически сам себя продает, а ознакомить вас с основными концепциями, которые необходимо освоить, прежде чем вы сможете официально назвать себя гуру Python. Освоение этих концепций облегчит вам работу в более высоких областях применения Python. Концепции являются базовыми и промежуточными, простыми вещами.
Основные понятия, которые мы будем обсуждать, следующие:
- Типы данных — числа, строки, булевы,
- Операторы Python — арифметические операторы, операторы сравнения, булевы операторы.
- Переменные и ключевые слова
- Операторы управления потоком — операторы if, циклы while, циклы for.
- Функции — встроенные функции, определение функции, аргументы, анонимные функции,
- Типы данных Python — списки, кортежи, множества, словари.
- Классы и объекты, наследование,
- Обработка ошибок и исключений — try… except… else… finally…
- импортирование библиотек
- Строка углубленно
- Число углубленно
- Дата и время
Концепции промежуточного уровня, которые мы будем обсуждать:
- Регулярные выражения (regexes)
- Файловые операции
- Создание собственного модуля/библиотеки
1.1 Типы данных
Вам необходимо освоить типы данных. Это категории для значений. В Python каждое значение принадлежит ровно одному типу данных. Вам необходимо научиться объявлять их. Наиболее распространенными типами данных в python являются:
-
String — это текстовые значения. Всегда заключайте строку в кавычки. Например:
-
Integer — это любое целое число, положительное или отрицательное. Например:
23
-21
- Float — Это любое действительное число, содержащее десятичную точку. Например:
33.341416
-575.6474562
0.425
- Boolean — это тип данных, который может иметь одно из двух значений: True или False. Например:
True
False
1.2 Операторы Python
Python предлагает множество различных операторов для работы с типами данных и их сравнения. Например:
- Арифметические операторы — эти операторы предназначены для выполнения арифметических действий: сложения, вычитания, умножения, деления и других.
** Exponent
% Modulus/remainder
// Integer division/floored quotient
/ Division
* Multiplication
- Subtraction
+ Addition
- Операторы сравнения — эти операторы сравнивают два значения и оценивают их до одного булева значения. Например:
== Equal to
!= Not equal to
< Less than
> Greater than
<= Less than or equal to
>= Greater than or equal to
'hello' == 'hello' # True
'hello' == 'Hello' # False
- Булевы операторы — эти операторы сравнивают булевы значения. and — бинарный оператор (всегда принимает два булевых значения), который оценивает выражение в True, если оба булевых значения True, иначе — в False. Например:
True and True # True
True and False # False
False and False # False
or — бинарный оператор, который оценивает выражение в True, если одно из двух булевых значений True. Если оба значения False, то выражение получает значение False. Например:
True or True # True
True or False # True
False or False # False
not — Оценивает противоположное булево значение. Например:
not True # False
not False # True
1.3 Переменные и ключевые слова
Переменная — это как ячейка в памяти компьютера, где хранится одно значение, к которому можно обратиться позже. Мы создаем переменную, используя имя переменной, знак равенства (оператор присваивания) и значение, которое нужно сохранить. Например:
name = ‘Elkanah Malonza’.
Правила создания переменной
- Это может быть только одно слово.
- В нем могут использоваться только буквы, цифры и символ подчеркивания ( _ ).
- Оно не может начинаться с цифры.
- Это не может быть ключевое слово. Ключевые слова имеют особое значение в любом языке программирования. Вот список ключевых слов в Python.
1.4 Операторы управления потоком
Операторы управления потоком определяют, какие инструкции Python должны выполняться при тех или иных условиях. Операторы управления потоком часто начинаются с части, называемой условием, а затем следует блок кода, называемый пунктом. Условие — это булевское выражение, которое, если его значение равно true, выполняет условие.
1.4.1 операторы if…elif…else
Предложение оператора if будет выполнено, если условие оператора равно True, и пропущено, если условие равно False.
За ним может следовать несколько операторов elif, если вы хотите, чтобы выполнялся один из многих возможных пунктов.
За выражением if может следовать оператор else. Оператор else выполняется только тогда, когда условие оператора if и/или оператора elif равно False.
if name == 'Elkanah':
print('Hello Elkanah')
elif name == 'Malone':
print('Hello Malone')
else:
print('Hello')
1.4.2 циклы while
Код в операторе while будет выполняться снова и снова, пока условие оператора while равно True.
Например:
count = 0
while count < 5:
print('Hello, world.')
count = count + 1
Для досрочного прерывания выполнения пункта цикла while можно использовать оператор break.
count = 0
while count < 5:
print('Hello, world.')
if count == 3:
break
count = count + 1
Оператор continue приводит к тому, что выполнение программы немедленно возвращается к началу цикла и повторно оценивает его условие.
count = 0
while count < 5:
count = count + 1
if count == 3:
continue
print(count)
1.4.3 циклы for и функция range()
Циклы for используются для выполнения блока кода только определенное количество раз.
for i in range(10):
print('Malone Ten Times')
1.5 Функции
Функции позволяют разделить код на небольшие задачи, которые можно вызывать из разных мест приложения. Это также позволяет избежать дублирования кода.
1.5.1 Встроенные функции
Это функции, которые предоставляются python по умолчанию. Пример:
print('I love Python')
name = input("Enter Your Name: ")
print(name)
len(name)
Все встроенные функции в Python 3.7
1.5.2 Определение функции
Вы также можете определить свои собственные функции
def intro():
print("Hello Stranger.")
print("I love Python.")
intro()
1.5.3 Функция с аргументами
- Вы также можете определить собственные функции, принимающие аргументы.
def add(x,y):
z = x + y
print(z)
add(3,8) # 11
- Возвращаемые значения и заявления о возврате
def add(x,y):
return x + y
add(2,3) # 5
- Определение дополнительных параметров со значениями по умолчанию
def add(x=0,y=0):
return x + y
add() # 0
add(4) # 4
add(2,3) # 5
1.5.4 Использование аргументов ключевых слов (kwargs)
Вы можете указать функции, какой параметр будет иметь то или иное значение, используя синтаксис parameter = value в коде, вызывающем функцию.
def divide(x,y):
return x/y
divide(y=2, x=3) # 1.5
divide(x=2, y=3) # 0.6666666666666666
1.5.5 *args — Передача произвольного количества аргументов
Вы также можете спроектировать функцию так, чтобы она принимала любое количество аргументов, используя *args
в качестве имени параметра.
Все, что вы передадите, станет кортежем с именем args
внутри функции. Кортеж — это неизменяемый список (список, который нельзя изменить).
def sorter(*args):
newlist = list(args)
# Sort and show the list.
newlist.sort()
return newlist
sorter(2, 0.42, -42,4.24, 25, 5)
1.5.6 Анонимные функции/лямбда-функции.
Анонимная функция не обязательно должна иметь имя.
percent = lambda n : f"{n:.2%}"
print(percent(.6)) # 60.00%
1.6 Структуры данных Python
1.6.1 Списки
Список — это значение, содержащее несколько значений в упорядоченной последовательности. Список начинается с открывающей квадратной скобки и заканчивается закрывающей квадратной скобкой []. Значения внутри списка также называются элементами, которые разделяются запятыми. Пример:
subjects = ['Maths', 'Physics', 'Biology', 'Geography', 'History']
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
Чтобы получить отдельные значения в списке, мы используем индексы. Пример:
subjects = ['Maths', 'Physics', 'Biology', 'Geography', 'History']
print(subjects[0]) # Maths
print(subjects[0]) # Physics
У List есть такие методы, как append()
, insert()
, pop()
, remove()
… и т.д., которые могут пригодиться при написании кода на python. Вам необходимо освоить их все.
1.6.2 Кортежи
Кортеж — это просто неизменяемый список. Другими словами, кортеж — это список, но после его определения вы не можете его изменить.
Кортежи вводятся с помощью круглых скобок ( и ), а не квадратных скобок [ и ].
subjects = ('History', 'Geography', 'Biology', 'Physics', 'Maths')
num = (5, 7, 8, 5, 3, 8, 5, 2, 1, 8, 5, 7)
Методы и приемы работы со списком, которые изменяют данные списка, не будут работать с кортежами, но остальные будут.
1.6.3 Наборы
Python Sets также является средством организации данных. Разница между множеством и списком заключается в том, что элементы в множестве не имеют определенного порядка. Даже если вы можете определить набор с элементами в определенном порядке, ни один из элементов не имеет индексных номеров для идентификации своих позиций.
Чтобы определить набор, используйте фигурные скобки там, где вы использовали бы квадратные скобки для списка и круглые скобки для кортежа. Например:
subjects = {'Maths', 'Physics', 'Biology', 'Geography', 'History'}
num = {5, 7, 8, 5, 3, 8, 5, 2, 1, 8, 5, 7}
Вы не можете изменить порядок элементов в наборе, поэтому нельзя использовать .sort()
для сортировки набора или .reverse()
для изменения его порядка.
1.6.1 Словари
Как и список, словарь — это коллекция множества значений, но в отличие от индексов для списков, индексы для словарей могут использовать множество различных типов данных, а не только целые числа.
Индексы для словарей называются ключами, а ключ и связанное с ним значение — парой ключ-значение.
В коде словарь обозначается скобками {}. Пример:
person = {
"name": "Elkanah",
"gender": "Male",
"height": "5.9 Foot",
"weight": "67 kg",
}
Вы можете получить доступ к этим значениям через их ключи:
print(person["name"]) # Elkanah
print(person["height"]) # 5.9 Foot
Как и списки, словари тоже имеют методы, например clear(), copy(), fromkeys(), get(), items(), keys(), pop(), popitem(), setdefault(), update()
и values()
. Эти методы используются для управления данными в словаре. Вам необходимо знать, как их использовать.
1.7 Классы и объекты, наследование
Как и функции, классы также позволяют разделить код и данные.
Класс — фрагмент кода, из которого можно создать уникальный объект, где каждый объект является единственным экземпляром класса.
Атрибут — характеристика объекта, содержащая информацию о нем.
Метод — Функция Python, связанная с классом. Она определяет действие, которое может выполнить объект.
Пример:
class Dog:
def __init__(self, age, name):
self.age = age
self.name = name
def change_name(self, new_name):
self.name = new_name
def display_name(self):
print(self.name)
def display_age(self):
print(self.age)
puppy = Dog(3, 'TOM')
puppy.display_age()
puppy.display_name()
puppy.change_name("Cindy")
puppy.display_name()
Наследование
Наследование определяется путем создания подклассов внутри класса.
Синтаксис:
class parent:
statements
class child(parent):
statements
Подклассы наследуют все атрибуты и методы главного класса более высокого уровня, или родительского класса, который обычно называют базовым классом.
class Quadrilateral:
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
def perimeter(self):
p = self.a + self.b + self.c + self.d
print("perimeter: ", p)
q1 = Quadrilateral(4, 5, 7, 9)
q1.perimeter()
class Rectangle(Quadrilateral):
def __init__(self, a, b):
super(Rectangle, self).__init__(a, b, b, a)
def area(self):
area = self.a * self.b
print("Area:", area)
r1 = Rectangle(20, 10)
r1.perimeter()
r1.area()
1.8 Обработка ошибок и исключений — try..except..else..finally
Получение ошибки, или исключения, в вашей программе на Python означает, что вся программа завершится аварийно. Вы не хотите, чтобы это произошло в реальных программах. Пример:
Вышеприведенная программа создает ошибку FileNotFoundError
и прекращает выполнение. Мы хотим, чтобы программа обнаруживала ошибки, обрабатывала их, а затем продолжала выполнение. Именно здесь на помощь приходит try...except...else...finally...
Statements.
try:
# Open file and shows its name.
dummy_file = open('random_file.csv')
print(dummy_file.name)
except Exception:
print("Sorry, File named random_file.csv Does not Exist.")
- Быть конкретным в исключенияхИногда нам нужно поймать конкретную ошибку. Например,
FileNotFoundError
в приведенном выше коде. Вы добавляете имя исключения после оператора except.
try:
# Open file and shows its name.
dummy_file = open('random_file.csv')
print(dummy_file.name)
except FileNotFoundError:
print("Sorry, File named random_file.csv Does not Exist.")
- За одним оператором Try может следовать несколько операторов except.
try:
...
except FileNotFoundError:
print("Sorry, File named random_file.csv Does not Exist.")
except Exception as e:
print(e)
- else blockКод в этом блоке будет выполнен, если не возникнет исключений
try:
...
except FileNotFoundError:
print("Sorry, File named random_file.csv Does not Exist.")
except Exception as e:
print(e)
else:
# Continue on here only if no exceptions raised
- finally blockЕсли блок включен, код в этом блоке будет выполнен независимо от того, возникнет исключение или нет.
try:
try to do this
except:
if x happens, stop here
except Exception as e:
if something else bad happens, stop here
else:
if no exceptions, continue on normally here
finally:
do this code no matter what happened above
1.9 Импортирование библиотек
Python поставляется с набором модулей, называемых стандартной библиотекой — это программа на Python, содержащая связанную группу функций, которые могут быть встроены в ваши программы. Прежде чем вы сможете использовать функции в модуле, вы должны импортировать модуль с помощью оператора import.
Пример: модуль random содержит функции, связанные со случайными числами,
import random
for i in range(15):
print(random.randint(1, 10))
Пример: модуль math содержит функции, связанные с математикой.
import math
print(math.sqrt(81))
1.10 Строковый тип данных
В Типах данных вы узнали о строковом типе данных. В python вы можете делать со строками больше, чем запись, печать и доступ к строкам. Вы можете извлекать частичные строки из строковых значений, добавлять или удалять интервалы, преобразовывать буквы в строчные или прописные, проверять правильность форматирования строк и т.д. Это легко сделать с помощью различных методов работы со строками, индексов и срезов, а также других встроенных функций. Пример индексов, срезов и встроенных функций.
В python существует более 30 строковых методов. Они пригодятся, если вы знаете, как их использовать. Вот некоторые из них:
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'
1.11 Числа
С типами данных int и float можно делать больше, чем просто объявлять их и выполнять арифметические операции с ними. Ниже приведены встроенные функции, которые могут манипулировать числами в python.
- abs(x) — Возвращает абсолютное значение числа x (преобразует отрицательные числа в положительные).
- bin(x) Возвращает строку, представляющую значение x, преобразованное в двоичную систему.
- float(x) — Преобразует строку или число x в тип данных float.
- format(x,y) — Возвращает x, отформатированный в соответствии с указаниями строки format y.
- hex(x) — Возвращает строку, содержащую x, преобразованную в шестнадцатеричную систему с префиксом 0x.
- int(x) — Преобразует x в целочисленный тип данных, усекая (не округляя) десятичную точку и все цифры после нее.
- max(x,y,z …) — Принимает любое количество числовых аргументов и возвращает наибольший из них.
- *min(x,y,z …) * — Принимает любое количество числовых аргументов и возвращает наименьший из них.
- oct(x) — Преобразует x в восьмеричное число с префиксом 0o для обозначения восьмеричного.
- round(x,y) — Округляет число x до y количества десятичных знаков.
Если вы хотите выполнять сложные математические операции с числами, такие как тригонометрия, гипербола, силы и логарифмы, угловые преобразования, константы, такие как pi и e, импортируйте модуль math. Ниже приведены некоторые методы и атрибуты модуля math:
'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc'
1.12 Дата и время
Для работы с датами и временем обычно используется модуль datetime.
- Импортируйте модуль datetime с псевдонимом dt*
import datetime as dt
.
1.12.1 Работа с датами
- Дата состоит из месяца, дня и года (без информации о времени).
variable = datetime.date(year, month, day)
- Храните сегодняшнюю дату в переменной с именем today.*
today = dt.date.today()
- Храните другую дату в переменной с именем birth_date*birth_date = dt.date(2019, 12, 31)
- Доступ к месяцу, дню и году
print(birth_date.month)
print(birth_date.day)
print(birth_date.year)
1.12.2 Работа со временем
- Время состоит из часа, минуты, секунды, микросекунды и, при необходимости, информации о часовом поясе (но без даты).
- Если вы хотите работать строго с данными о времени, используйте класс
datetime.time
. Основной синтаксис для определения объекта времени с помощью класса time:variable = datetime.time([hour,[minute,[second,[microsecond]]]])
. - все аргументы необязательны
midnight = dt.time() # 00:00:00
just_morning = dt.time(06,09,00)
1.12.3 Работа с датой и временем
- Один элемент данных, включающий дату, время и, опционально, информацию о часовом поясе.
variable = datetime.datetime(year, month, day, hour, [minute, [second, [microsecond]]])
- Месяц, день и год являются обязательными. Остальные параметры необязательны, и если их опустить, то время будет равно нулю.
import datetime as dt
new_years_eve = dt.datetime(2019,12,31,23,59)
print(new_years_eve)
1.12.4 Форматирование строк для дат и времени
По умолчанию дата отображается в формате yyyy-mm-dd, но вы можете форматировать даты и время по своему усмотрению, используя f-строки. Узнайте, как правильно использовать директивы в f-строках, и вы сможете отображать дату и время так, как вам нравится. Пример:
print(f"{birth_date:%A, %B %d, %Y}")
today_s_date = f"{today:%m/%d/%Y}"
print(today_s_date) # 03/03/2022
**
1.12.5 Дельта времени**
timedelta
происходит автоматически, когда вы вычитаете одну дату из другой, чтобы получить время между ними.
new_year = dt.date(2022, 1, 1)
birth_day = dt.date(2022, 5, 27)
days_between = birth_day - new_year
- Вы также можете определить любую временную дельту (длительность), используя следующий синтаксис:
datetime.timedelta(days=, seconds=, microseconds=, milliseconds=, minutes=, hours=, weeks=)
Если вы опустите аргумент, его значение будет равно нулю.
import datetime as dt
new_years = dt.date(2022,1,1)
duration = dt.timedelta(days=146)
print(new_year + duration) # 2022-05-27
import datetime as dt
now = dt.datetime.now()
birthdatetime = dt.datetime(1997, 1, 19, 6, 00)
age = now - birthdatetime
print(age) # 9174 days, 15:13:05.474595
print(type(age)) # <class 'datetime.timedelta'>
2. Промежуточный Python
2.1 Регулярные выражения (regexes)
Регулярные выражения - это огромная экономия времени для программистов. Они позволяют задать шаблон текста для поиска или фильтрации.
-
Все функции regex в Python находятся в модуле re.
-
Передача строкового значения, представляющего ваше регулярное выражение, в
re.compile()
возвращает объект шаблона Regex. -
Метод объекта Regex
search()
ищет первый экземпляр,findall()
ищет все совпадающие экземпляры и
метод sub() для замены всех совпадающих строк
на указанную строку.
Пример: Поиск номеров телефонов Кении (+254)712345678 | 0765-432-123 | 0722004445
import re
def extract_phone_num(text):
kenya_pattern = r"((+d{3})d{9})|(d{4}-d{3}-d{3})|(d{10})"
matching = re.compile(kenya_pattern)
return matching.findall(text)
my_text = "(+254)734423363 0714-134-941This is 0756464654 just a text with random 0756464654 Kenyan Phone Numbers "
"(+254)718306114 0718-306-114 blah 0756464654 blah 07013-213-311 0756464654"
print(extract_phone_num(my_text))
Результат:
Теперь, когда вы знаете основные шаги по созданию и поиску объектов регулярных выражений с помощью Python. Вам необходимо изучить некоторые более мощные возможности по поиску шаблонов. Изучите символы regex, используемые в шаблонах. Например: r"((+d{3})d{9})|(d{4}-d{3}-d{3})|(d{10})"
. Узнайте, как сделать поиск чувствительным к регистру и подстановке совпадающих строк.
2.2 Файловые операции
Файловые операции включают в себя использование Python для создания, чтения и сохранения файлов на жестком диске. Файлы могут быть как текстовыми, так и двоичными. Они также включают в себя организацию уже существующих файлов на жестком диске, например: копирование, переименование, перемещение или сжатие.
Пути к файлам
Но прежде чем научиться кодировать файловые операции, необходимо научиться работать с путями к файлам в Python. Модуль path
в модуле os
упрощает работу с путями файлов.
Методы и атрибуты os.path
, упрощающие работу с путями к файлам, следующие:
'abspath', 'altsep', 'basename', 'commonpath', 'commonprefix', 'curdir', 'defpath', 'devnull', 'dirname', 'exists', 'expanduser', 'expandvars', 'extsep', 'genericpath', 'getatime', 'getctime', 'getmtime', 'getsize', 'isabs', 'isdir', 'isfile', 'islink', 'ismount', 'join', 'lexists', 'normcase', 'normpath', 'os', 'pardir', 'pathsep', 'realpath', 'relpath', 'samefile', 'sameopenfile', 'samestat', 'sep', 'split', 'splitdrive', 'splitext', 'stat', 'supports_unicode_filenames', 'sys'
Узнайте, как работать с вышеперечисленными атрибутами и методами.
Существуют и другие методы os
, помимо тех, что находятся в os.path
, которые используются для управления файлами и путями к ним. Пример:
Процесс чтения/записи файлов
Если вам удобно работать с папками и путями к файлам, давайте укажем расположение файлов для чтения и записи.
Ниже приведены функции для открытия, чтения и записи текстовых файлов.
- open() - функция, возвращающая объект File. режим чтения по умолчанию
- open('', 'w') - открыть файл для записи. Замените 'w' на 'a', чтобы открыть файл в режиме добавления.
- read() - метод объекта File для чтения его содержимого.
- readlines() - метод для получения списка строковых значений из файла, по одной строке для каждой строки текста.
- write() - метод объекта File для записи содержимого.
- close() - закрыть файл, вызвав метод на объекте File.Пример:
file_x = open('/users/path_to_folder/my_file.txt')
file_x.readlines()
file_x.close()
file_x = open('/users/path_to_folder/my_file.txt', 'w')
file_x.write('Hello world!n')
file_x.close()
Модуль shelve
Вы можете сохранять переменные в ваших программах на Python в двоичных файлах-полках с помощью модуля shelve.
# Save
shelfFile = shelve.open(<filename>)
cats = ['Zophie', 'Pooka', 'Simon']
shelfFile['cats'] = cats
shelfFile.close()
# Open
shelfFile = shelve.open('mydata')
shelfFile['cats']
# ['Zophie', 'Pooka', 'Simon']
shelfFile.close()
Упорядочивание файла
- shutil.copy('source', 'destination') - скопирует один файл
- shutil.copytree(source, destination) - копирует папку со всеми ее файлами и подпапками
- shutil.move(source, destination) - переместит файл из источника в место назначения.
- os.unlink(path) - удалит файл по пути .
- os.rmdir(path) - удаление папки по пути . В этой папке не должно быть никаких файлов или папок.
-
shutil.rmtree(path) - удалит папку по адресу path , при этом все содержащиеся в ней файлы и папки также будут удалены.
-
Безопасное удаление с помощью модуля
send2trash
import send2trash
send2trash.send2trash('bacon.txt')
Прохождение по дереву каталогов
- os.walk() - на каждой итерации цикла A for возвращает три значения
- Строку с именем текущей папки
- Список строк папок в текущей папке
- Список строк файлов в текущей папкеПример:
import os
for folderName, subfolders, filenames in os.walk('/home/malone/PycharmProjects'):
print('The current folder is ' + folderName)
for subfolder in subfolders:
print('SUBFOLDER OF ' + folderName + ': ' + subfolder)
for filename in filenames:
print('FILE INSIDE ' + folderName + ': ' + filename)
print('')
2.3 Создание собственного модуля/библиотеки
Мы уже упоминали, что модули - это коллекции готового кода, который вы можете импортировать
и использовать в своем собственном коде.
Модуль - это просто файл с расширением имени .py. Имя модуля совпадает с именем файла без расширения .py
. Да, это так просто.
Например, если у меня есть файл python с именем email_app.py
, внутри файла есть функции send_email(), inbox(), sent_box() и drafts() и глобальные переменные EMAIL и PORT. Я могу импортировать этот модуль как:
import email_app
email_app.inbox()
print(email_app.PORT)
Заключение
После изучения вышеперечисленных концепций Python и их детального изучения (я просто указал на них, не вдаваясь в подробности), вы сможете легко и без суеты заниматься Data Science, веб-разработкой и другими областями Python. Есть и такие интересные темы, как веб-скраппинг, планирование задач и запуск программ, создание и работа с двоичными файлами (PDF, Word Doc, Excel, CSV), сетевое программирование, отправка электронной почты и работа с изображениями, которые я опустил. Эти темы просты, потому что все, что вы делаете, это импортируете соответствующий модуль и работаете с его методами и атрибутами. Но если вы не овладели основами, они, безусловно, будут трудными.