Запись в текстовый файл. Продолжение.
Для записи списка строк имеется метод writelines(). В качестве параметра он принимает список строк:
Стоит учитывать, что, если мы хотим, чтобы каждая строка из списка располагалась на отдельной строке в файле, то строка в списке должна заканчиваться на символ "\n".
Еще один способ записи в файл представляет стандартный метод print(), который применяется для вывода данных на консоль:
Для вывода данных в файл в метод print в качестве второго параметра передается название файла через параметр file. А первый параметр представляет записываемую в файл строку.
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Для записи списка строк имеется метод writelines(). В качестве параметра он принимает список строк:
Стоит учитывать, что, если мы хотим, чтобы каждая строка из списка располагалась на отдельной строке в файле, то строка в списке должна заканчиваться на символ "\n".
Еще один способ записи в файл представляет стандартный метод print(), который применяется для вывода данных на консоль:
Для вывода данных в файл в метод print в качестве второго параметра передается название файла через параметр file. А первый параметр представляет записываемую в файл строку.
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Чтение файла.
Для чтения файла он открывается с режимом r (Read), и затем мы можем считать его содержимое различными методами:
• readline(): считывает одну строку из файла
• read(): считывает все содержимое файла в одну строку
• readlines(): считывает все строки файла в список
Например, считаем выше записанный файл построчно:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Для чтения файла он открывается с режимом r (Read), и затем мы можем считать его содержимое различными методами:
• readline(): считывает одну строку из файла
• read(): считывает все содержимое файла в одну строку
• readlines(): считывает все строки файла в список
Например, считаем выше записанный файл построчно:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Чтение файла. Продолжение.
Несмотря на то, что мы явно не применяем метод readline() для чтения каждой строки, но в при переборе файла этот метод автоматически вызывается для получения каждой новой строки. Поэтому в цикле вручную нет смысла вызывать метод readline. Консольный вывод:
Однако поскольку функция print неявно добавляет к каждой строке перевод строки "\n", а строки в записанном файлетакже разделяются символом перевода строки "\n", то получается, что каждая строка оканчивается двойным "\n". и чтобы исключить излишнего переноса на другую строку в функцию print можно передать значение end="".
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Несмотря на то, что мы явно не применяем метод readline() для чтения каждой строки, но в при переборе файла этот метод автоматически вызывается для получения каждой новой строки. Поэтому в цикле вручную нет смысла вызывать метод readline. Консольный вывод:
Однако поскольку функция print неявно добавляет к каждой строке перевод строки "\n", а строки в записанном файлетакже разделяются символом перевода строки "\n", то получается, что каждая строка оканчивается двойным "\n". и чтобы исключить излишнего переноса на другую строку в функцию print можно передать значение end="".
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Чтение файла. Продолжение.
Если файл небольшой, то его можно разом считать с помощью метода read():
И также применим метод readlines() для считывания всего файла в список строк:
При чтении файла мы можем столкнуться с тем, что его кодировка не совпадает с ASCII. В этом случае мы явным образом можем указать кодировку с помощью параметра encoding:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Если файл небольшой, то его можно разом считать с помощью метода read():
И также применим метод readlines() для считывания всего файла в список строк:
При чтении файла мы можем столкнуться с тем, что его кодировка не совпадает с ASCII. В этом случае мы явным образом можем указать кодировку с помощью параметра encoding:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Чтение и запись.
Для открытия файла сразу для чтения и записи применяются флаги:
• r+: если файл не найден, то генерируется исключение FileNotFoundError
• w+: если файл не существует, то он автоматически создается. Если файл существует, то он перезаписывается
Например, запишем и считаем из файла данные:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Для открытия файла сразу для чтения и записи применяются флаги:
• r+: если файл не найден, то генерируется исключение FileNotFoundError
• w+: если файл не существует, то он автоматически создается. Если файл существует, то он перезаписывается
Например, запишем и считаем из файла данные:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Перемещение по файлу
Для перемещения по файлу после его открытия применяется метод seek(). В него передается индекс байта, к которому надо переместить указатель в файле. Например, в примере выше после записи указатель в файле автоматически устанавливается на конец файла. И считывания данных идет с позиции, на которой стоит указатель. И чтобы его сдвинуть в самое начало, применяется вызов:
Аналогичным образом мы можем перемещаться по файлу на нужную позицию. Например, считаем данные, начиная с 5-го символа:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Для перемещения по файлу после его открытия применяется метод seek(). В него передается индекс байта, к которому надо переместить указатель в файле. Например, в примере выше после записи указатель в файле автоматически устанавливается на конец файла. И считывания данных идет с позиции, на которой стоит указатель. И чтобы его сдвинуть в самое начало, применяется вызов:
Аналогичным образом мы можем перемещаться по файлу на нужную позицию. Например, считаем данные, начиная с 5-го символа:
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Файлы CSV
Одним из распространенных файловых форматов, которые хранят в удобном виде информацию, является формат csv. Каждая строка в файле csv представляет отдельную запись или строку, которая состоит из отдельных столбцов, разделенных запятыми. Собственно поэтому формат и называется Comma Separated Values. Но хотя формат csv - это формат текстовых файлов, Python для упрощения работы с ним предоставляет специальный встроенный модуль csv.
Рассмотрим работу модуля на примере:
В файл записывается двухмерный список - фактически таблица, где каждая строка представляет одного пользователя. А каждый пользователь содержит два поля - имя и возраст. То есть фактически таблица из трех строк и двух столбцов.
🐍 Укус питона // 💬 Чат // #теория #файлы #CSV
Одним из распространенных файловых форматов, которые хранят в удобном виде информацию, является формат csv. Каждая строка в файле csv представляет отдельную запись или строку, которая состоит из отдельных столбцов, разделенных запятыми. Собственно поэтому формат и называется Comma Separated Values. Но хотя формат csv - это формат текстовых файлов, Python для упрощения работы с ним предоставляет специальный встроенный модуль csv.
Рассмотрим работу модуля на примере:
В файл записывается двухмерный список - фактически таблица, где каждая строка представляет одного пользователя. А каждый пользователь содержит два поля - имя и возраст. То есть фактически таблица из трех строк и двух столбцов.
🐍 Укус питона // 💬 Чат // #теория #файлы #CSV
Файлы CSV. Продолжение.
При открытии файла на запись в качестве третьего параметра указывается значение newline="" - пустая строка позволяет корректно считывать строки из файла вне зависимости от операционной системы.
Для записи нам надо получить объект writer, который возвращается функцией csv.writer(file). В эту функцию передается открытый файл. А собственно запись производится с помощью метода writer.writerows(users) Этот метод принимает набор строк. В нашем случае это двухмерный список.
Если необходимо добавить одну запись, которая представляет собой одномерный список, например, ["Sam", 31], то в этом случае можно вызвать метод writer.writerow(user)
В итоге после выполнения скрипта в той же папке окажется файл users.csv, который будет иметь следующее содержимое:
🐍 Укус питона // 💬 Чат // #теория #файлы #CSV
При открытии файла на запись в качестве третьего параметра указывается значение newline="" - пустая строка позволяет корректно считывать строки из файла вне зависимости от операционной системы.
Для записи нам надо получить объект writer, который возвращается функцией csv.writer(file). В эту функцию передается открытый файл. А собственно запись производится с помощью метода writer.writerows(users) Этот метод принимает набор строк. В нашем случае это двухмерный список.
Если необходимо добавить одну запись, которая представляет собой одномерный список, например, ["Sam", 31], то в этом случае можно вызвать метод writer.writerow(user)
В итоге после выполнения скрипта в той же папке окажется файл users.csv, который будет иметь следующее содержимое:
🐍 Укус питона // 💬 Чат // #теория #файлы #CSV