🐍 Укус питона 🐍
3.02K subscribers
567 photos
2 videos
272 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Учитывая следующую функцию. fun1() Выберите все правильные вызовы функций.
Anonymous Quiz
71%
1) fun1("Emma", age=23) 2)fun1(age =23, name="Emma")
25%
fun1(name="Emma", 23)
4%
fun1(age =23, "Emma")
Чтение и запись.

Для открытия файла сразу для чтения и записи применяются флаги:

• r+: если файл не найден, то генерируется исключение FileNotFoundError
• w+: если файл не существует, то он автоматически создается. Если файл существует, то он перезаписывается

Например, запишем и считаем из файла данные:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Перемещение по файлу

Для перемещения по файлу после его открытия применяется метод seek(). В него передается индекс байта, к которому надо переместить указатель в файле. Например, в примере выше после записи указатель в файле автоматически устанавливается на конец файла. И считывания данных идет с позиции, на которой стоит указатель. И чтобы его сдвинуть в самое начало, применяется вызов:

Аналогичным образом мы можем перемещаться по файлу на нужную позицию. Например, считаем данные, начиная с 5-го символа:

🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Каков результат следующего ifоператора
Anonymous Quiz
20%
False
80%
True
Пример работы с файлами

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

🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Что выведет этот код?
Anonymous Quiz
48%
64
47%
512
5%
Нет правильного варианта
Файлы CSV

Одним из распространенных файловых форматов, которые хранят в удобном виде информацию, является формат csv. Каждая строка в файле csv представляет отдельную запись или строку, которая состоит из отдельных столбцов, разделенных запятыми. Собственно поэтому формат и называется Comma Separated Values. Но хотя формат csv - это формат текстовых файлов, Python для упрощения работы с ним предоставляет специальный встроенный модуль csv.

Рассмотрим работу модуля на примере:

В файл записывается двухмерный список - фактически таблица, где каждая строка представляет одного пользователя. А каждый пользователь содержит два поля - имя и возраст. То есть фактически таблица из трех строк и двух столбцов.

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV
Что выведет этот код?
Anonymous Quiz
50%
10
18%
0
32%
Syntax Error
Файлы CSV. Продолжение.

При открытии файла на запись в качестве третьего параметра указывается значение newline="" - пустая строка позволяет корректно считывать строки из файла вне зависимости от операционной системы.

Для записи нам надо получить объект writer, который возвращается функцией csv.writer(file). В эту функцию передается открытый файл. А собственно запись производится с помощью метода writer.writerows(users) Этот метод принимает набор строк. В нашем случае это двухмерный список.

Если необходимо добавить одну запись, которая представляет собой одномерный список, например, ["Sam", 31], то в этом случае можно вызвать метод writer.writerow(user)

В итоге после выполнения скрипта в той же папке окажется файл users.csv, который будет иметь следующее содержимое:

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV
Выберите правильный способ получения значения ключа отметок.
Anonymous Quiz
10%
m = student.get(2)
81%
m = student.get('marks')
9%
m = student[2])
Файлы CSV. Продолжение.

Для чтения из файла нам наоборот нужно создать объект reader:

При получении объекта reader мы можем в цикле перебрать все его строки, смотрим вторую часть примера:

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV
Работа со словарями.

В примере выше каждая запись или строка представляла собой отдельный список, например, ["Sam", 31]. Но кроме того, модуль csv имеет специальные дополнительные возможности для работы со словарями. В частности, функция csv.DictWriter() возвращает объект writer, который позволяет записывать в файл. А функция csv.DictReader() возвращает объект reader для чтения из файла. Например:

Запись строк также производится с помощью методов writerow() и writerows(). Но теперь каждая строка представляет собой отдельный словарь, и кроме того, производится запись и заголовков столбцов с помощью метода writeheader(), а в метод csv.DictWriter в качестве второго параметра передается набор столбцов.

При чтении строк, используя названия столбцов, мы можем обратиться к отдельным значениям внутри строки: row["name"].

🐍 Укус питона // 💬 Чат // #теория #файлы #CSV