Запись списка в txt файл в питоне
Собственно как записать результат работы функции в txt файл?
f = open( '***.txt', 'w' ) f.write( '. ' ) f.close()
Отслеживать
48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 3 ноя 2011 в 15:13
129 2 2 золотых знака 4 4 серебряных знака 12 12 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
f.write("\n".join(list).join("\n"));
for item in list: f.write("%s\n" % item)
import pickle # Хороший вариант для не-string списков, т.к мы зайдействуем сериализацию # с помощью pickle. Можно сериализовать в json или, например, xml. pickle.dump(list, f)
P.S Первый вариант хорош тем, что все действия выполняются в 1 строчку, но плох в плане того, что строчка конструируется целиком, и только лишь потом выполняется запись.
Как работать с файлами в Python

Программа на Python — это не только функционал, но и оптимальная система работы с файлами. Например, если вы пишете чат-бот, вам нужно загрузить в него готовые ответы в файле txt. Если вы сделали программу для обработки фото — здесь ваш код на Python должен быть готов обрабатывать файлы, которые загрузит в сервис пользователь. В этой статье разберемся, как работать с файлами на Python, какие для этого есть библиотеки и методы.

Освойте профессию
«Python-разработчик»
Что такое файл
На любом компьютере и в любой операционной системе есть файлы — область данных со своим именем, хранящаяся на носителе. Их принято считать базовыми объектами, из которых складываются директории. В Python с помощью файлов можно сохранять результат работы программы или получать из них данные для обработки в коде.
Python-разработчик
Освойте Python, самый популярный язык программирования
3 383 ₽/мес 6 150 ₽/мес

- открытие;
- операции чтения из файла и записи в файл;
- закрытие.
Разберемся со всеми действиями по порядку.
Открытие файла на чтение и запись в Python
На компьютере файл надо открыть перед тем, как вносить в него изменения. Такое же правила действует и для Python: нужно открыть файл на чтение и запись. Без этапа открытия нельзя читать содержимое или изменять его. Открыть файл можно с помощью функции open() :
open(file, mode='rt')
В функцию в качестве аргументов требуется передать путь файлу (file) и выбрать режим работы (mode). По умолчанию Python выбирает значение rt , но доступны и другие режимы:
Аргумент mode
Как работает
Чтение из файла
Открыть как текстовый файл
Запись в файл и создание файла, если его не существует
Запись в файл и вызовы исключения, если файла не существует
Открыть как двоичный файл
Запись в файл путем добавления новых значений в конец
Работа в режиме чтения и записи
Можно комбинировать режимы и использовать сразу несколько. К примеру, по умолчанию функция open() принимает аргумент rt . Это значит, что файл будет открыт в виде текстового документа для чтения. С помощью r+ и w+ можно открыть файл сразу для чтения и записи на Python. В первом случае несуществующие файлы будут создаваться, а во втором такое действие спровоцирует вызов исключения.
Если в Python надо открыть файл data.txt в виде текстового документа с правами для чтения, то для этого следует использовать следующий код:
f = open('data.txt')
При этом Python установит режим открытия файла по умолчанию. Если нужен другой режим, то следует передать в функцию аргументы mode:
f = open('data.txt', 'w+')
После окончания работы файлы надо закрывать — так же, как мы это делаем на компьютере. Для этого используется функция close() после кода взаимодействия с файлом:
f = open('data.txt', 'w+') # действия с файлом f.close()
Также файлы можно открывать с помощью менеджера контекста with . В этом случае файл автоматически закроется, когда работа с ним завершится:
with open('data.txt', 'w+') as f: # действия с файлом
При открытии файла можно дополнительно указать кодировку, если нужна специфическая или требуется больше контроля над работой кода:
with open('data.txt', 'w+', encoding='utf-8') as f: # действия с файлом
Кодировку можно указать третьим параметром и при обычном способе открытия:
f = open('data.txt', 'w+', encoding='utf-8') # действия с файлом f.close()
Чтение файла
Чтение из файла Python можно реализовать с помощью функции read(), если он открыт в режиме чтения r . Синтаксис функции выглядит следующим образом:
file.read(size)
В строке выше file обозначает объект, с которым работаем, а size — количество символов для чтения. Если ничего не указать в качестве аргумента функции read() , то получится прочитать сразу все содержимое документа.
Для примера: создадим в проекте file.txt и запишем в него строку «Привет, Python!». Теперь прочитаем первые шесть символов из файла:
with open('file.txt', 'r', encoding='utf-8') as f: data = f.read(6) print(data)
Если запустить код, то Python выведет в консоль фразу «Привет» — это и есть первые шесть символов строки «Привет, Python!» в file.txt:
>>> Привет
Теперь отредактируем код. В этом примере не будем передавать никакие аргументы в функцию read() :
with open('file.txt', 'r', encoding='utf-8') as f: data = f.read() print(data) >>> Привет, Python!
В этом случае система выводит сразу все содержимое файла.
Содержимое файла можно считывать построчно. Убедимся в этом, отредактировав file.txt. Добавим в него список продуктов:
Морковь Сметана Мука Яблоки
Теперь прочитаем этот список с помощью функции readline() :
with open('file.txt', 'r', encoding='utf-8') as f: print(f.readline()) >>> Морковь
Python прочитал первую строку списка продуктов. Если вызвать функцию readline() несколько раз, то получится прочитать последующие строки файла:
with open('file.txt', 'r', encoding='utf-8') as f: print(f.readline()) print(f.readline()) print(f.readline()) print(f.readline()) >>> Морковь >>> Сметана >>> Мука >>> Яблоки
Более удобно последовательное чтение с помощью readline() можно реализовать в цикле:
with open('file.txt', 'r', encoding='utf-8') as f: for line in f: print(line) >>> Морковь >>> Сметана >>> Мука >>> Яблоки
Все строки файла можно прочитать с помощью метода readlines() , возвращающего содержимое в виде списка вместе со специальными символами:
with open('file.txt', 'r', encoding='utf-8') as f: data = f.readlines() print(data) >>> ['Морковь\n', 'Сметана\n', 'Мука\n', 'Яблоки']
Такое чтение можно реализовать и без метода readlines() , воспользовавшись конструктором списков list() :
with open('file.txt', 'r', encoding='utf-8') as f: data = list(f) print(data) >>> ['Морковь\n', 'Сметана\n', 'Мука\n', 'Яблоки']
При чтении всего файла в Python стоит помнить, что он может быть слишком большим. Если разместить его полностью в оперативной памяти компьютера не получается, следует считывать его частями.
Запись в файл на Python
Для записи файла в Python используется функция write() . В качестве аргумента ей следует передать строку, содержимое которой будет записано:
file.write(string)
Удалим все содержимое file.txt и запишем в него строку «Привет, Python!»:
with open('file.txt', 'a', encoding='utf-8') as f: data = 'Привет, Python!' f.write(data)
Обратите внимание, что в этом примере мы открыли файл в режиме a, что позволяет записывать новые строки в конец. Выполняем код, открываем файл — теперь в нем содержится строка «Привет, Python!».
В файл можно записать сразу список строк. Для этого применяется метод writelines() , которому в качестве аргумента надо передать сам список. В качестве примера создадим переменную со списком продуктов и запишем ее в file.txt:
with open('file.txt', 'a', encoding='utf-8') as f: grocery = ['Морковь', 'Яблоки', 'Мука', 'Молоко'] f.writelines(grocery)
Если выполнить код и проверить file.txt, то мы увидим единую строку без пробелов. Все дело в том, что метод writelines() не добавляет разделители строк автоматически. Нужно сделать это вручную, прописав \n каждому элементу списка:
with open('file.txt', 'a', encoding='utf-8') as f: grocery = ['Морковь\n', 'Яблоки\n', 'Мука\n', 'Молоко\n'] f.writelines(grocery)
Теперь при выполнении кода каждый элемент списка будет записываться на новую строку.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов
Управление указателем
В Python есть возможность явно задать позицию указателя в файле — для этого используется метод seek(). Узнать текущую позицию можно с помощью метода tell() .
Рассмотрим принципы работы с методами на примере. Откроем file.txt в режиме доступа r+ и запишем в него строку «0123456789ABCDEF»:
with open('file.txt', 'r+', encoding='utf-8') as f: f.write('0123456789ABCDEF')
Теперь прочитаем седьмой символ в строке. Для этого воспользуемся методом seek() для перемещения указателя. В качестве аргумента надо передать функции аргумент смещения в байтах. Вспомним, что нумерация строк начинается с нуля, а нам надо прочитать седьмой символ строки. Значит, укажем смещение в шесть байтов:
with open('file.txt', 'r+', encoding='utf-8') as f: f.write('123456789ABCDEF') f.seek(5) data = f.read(1) print(data) >>> 6
Можно осуществить смещение с конца, тогда в качестве второго элемента надо передать отправную точку для формирования смещения. Всего доступны три начальные позиции:
- 0 — от начала файла;
- 1 — от текущей позиции;
- 2 — от конца файла.
Теперь прочитаем четвертый символ с конца строки:
with open('file.txt', 'r+b') as f: f.seek(-4, 2) data = f.read(1) print(data) >>> b'C'
Узнать байт позиции указателя можно с помощью метода tell() :
with open('file.txt', 'r+', encoding='utf-8') as f: f.write('123456789ABCDEF') f.read(5) print(f.tell())
Работа с файловой системой
В Python можно работать не только с конкретным файлом, но и со всей системой. Перемещаться между каталогами, создавать новые файлы и переименовывать существующие.
Для работы с файловой системой на Python используют встроенная библиотека OS. Ее необходимо отдельно импортировать в код проекта, чтобы получить доступа к ее методам:
import os
Теперь узнаем с помощью Python текущий каталог. Делаем это с помощью метода getcwd() . В выводе метода получим путь к папке, в которой сейчас находимся:
import os print(os.getcwd()) >>> /Users/daniilshat/PycharmProjects/pythonProject
С помощью метода listdir() можно получить список с содержимым каталога. В качестве аргумента можно передать путь к директории; если этого не сделать, то система покажет содержимое текущего каталога:
import os # содержимое текущего каталога print(os.listdir()) # содержимое директории PycharmProjects print(os.listdir('/Users/daniilshat/PycharmProjects')) >>> ['file.txt', 'main.py', '.idea'] >>> ['.DS_Store', 'pythonProject', 'bot', 'love-couples']
Для создания новых директорий файлов в Python используют метод mkdir() . В качестве аргумента ему надо передать полный путь, включая название новой директории. Для примера создадим директорию Example в PycharmProjects:
import os # содержимое директории PycharmProjects до создания print(os.listdir('/Users/daniilshat/PycharmProjects')) os.mkdir('/Users/daniilshat/PycharmProjects/Example') # содержимое директории PycharmProjects после создания print(os.listdir('/Users/daniilshat/PycharmProjects')) >>> ['.DS_Store', 'pythonProject', 'bot', 'love-couples'] >>> ['.DS_Store', 'pythonProject', 'Example', 'bot', 'love-couples']
С помощью Python можно переименовывать файлы и директории. Для этого используется метода rename() , которому необходимо передать в качестве аргументов путь к старому и новым файлам. Переименуем директорию Example в New Example:
import os dir = '/Users/daniilshat/PycharmProjects' old_file = os.path.join(dir, 'Example') new_file = os.path.join(dir, 'New Example') # содержимое директории PycharmProjects до переименования print(os.listdir(dir)) os.rename(old_file, new_file) # содержимое директории PycharmProjects после переименования создания print(os.listdir(dir)) >>> ['.DS_Store', 'pythonProject', 'Example', 'bot', 'love-couples'] >>> ['.DS_Store', 'pythonProject', 'bot', 'New Example', 'love-couples']
Для удаления пустых директорий файлов в Python можно использовать метод rmdir() , а для удаления директории со всем содержимым — shutil.rmtree() . В качестве аргумента требуется передать путь к директории. Для примера удалим директорию New Example, которую недавно создали:
import os # содержимое директории PycharmProjects до удаления print(os.listdir('/Users/daniilshat/PycharmProjects')) os.rmdir('/Users/daniilshat/PycharmProjects/New Example') # содержимое директории PycharmProjects после удаления print(os.listdir('/Users/daniilshat/PycharmProjects')) >>> ['.DS_Store', 'pythonProject', 'bot', 'New Example', 'love-couples'] >>> ['.DS_Store', 'pythonProject', 'bot', 'love-couples']
Итог
В Python можно работать с файлами и получать доступ к файловой системе для изменения каталогов и директорий. Все это можно делать с помощью кода. В Python для этого предусмотрены следующие методы.
| Метод | Что делает |
| os.getcwd() | Узнать текущий каталог |
| os.listdir(path) | Узнать список содержимого каталога |
| os.mkdir(path) | Создать директорию |
| os.rename(old_file, new_file) | Переименовать файл или директорию |
| os.rmdir(path) | Удалить пустую директорию |
| shutil.rmtree(path) | Удалить директорию со всем содержимым |
| file.read(size) | Прочитать определенное количество символов из файла |
| file.readline() | Прочитать строку из файла |
| file.readlines() | Прочитать все строки из файла |
| file.write(string) | Записать строку в файл |
| file.writelines(list) | Записать список строк в файл |
| file.seek(int) | Переместить указатель |
| file.tell() | Узнать текущее положение указателя |
Python-разработчик
Освойте Python с нуля. Подготовим к трудоустройству: дадим много практики, реальные проекты для портфолио, поможем с резюме. Лучшие студенты пройдут стажировки в проектах компаний-партнеров.
3 способа записи списка в файл на Python


Добавить в избранное
Главное меню » Язык программирования Python » 3 способа записи списка в файл на Python

Краткое описание: В этой краткой статье демонстрируются три способа записи списка в файл на языке сценариев Python.
В предыдущем совете по написанию сценариев мы показали вам, как выполнять команды Shell в Python. В этой статье мы покажем вам несколько способов записи списка в файл на Python.
Запись списка в файл на Python
На самом деле методы, которые мы собираемся обсудить здесь, используются для записи текста в файл на Python. В примерах, которые мы здесь используем, обсуждается запись списка в файл, но вы можете использовать его для написания любого текста. строка и т. д. с использованием функций, упомянутых здесь.
Метод 1: Запись списка в файл строка за строкой в Python, используя print
Команда печати в Python может использоваться для печати содержимого списка в файл. Элементы списка будут добавлены в новой строке в выходном файле.
Вот пример программы на Python для вашей справки:
MyList = ["Самара", "Сочи", "Мурманск", "Анапа"] MyFile = open ('output.txt', 'w')
for element in MyList: print >>MyFile, element MyFile.close()
Файл output.txt открывается в режиме записи. Цикл for в python повторяется для каждого элемента в списке. Команды печати записывают элемент в открытый файл.
Если вы используете команду cat для отображения содержимого выходного файла , это будет так:
Самара
Сочи
Мурманск
Анапа
Как видите, элементы списка записывались построчно в выходной файл.
В примерах файл был открыт в режиме записи с опцией ‘w’. Все предыдущее содержимое файла в этом режиме будет перезаписано.
Если вы хотите сохранить предыдущее содержимое файла, вы можете открыть файл в режиме добавления, используя опцию «a» вместо «w».
Способ 2: записать список в файл, используя функцию записи в Python
Теперь давайте посмотрим, как можно сохранить список в файл на Python. Мы собираемся использовать функцию Write().
Функция write() принимает строку в качестве аргумента. Итак, мы снова будем использовать цикл for для итерации каждого элемента в списке и записи его в файл.
Вот пример программы на Python:
MyList = ["Самара", "Сочи", "Мурманск", "Анапа"] MyFile=open('output.txt', 'w')
for element in MyList: MyFile.write(element) MyFile.write('\n') MyFile.close()
Обратите внимание, что элементы в списке не имеют символа новой строки. Вот почему мы добавляем символ новой строки ‘\ n’ после каждой итерации, чтобы элементы списка записывались в файл построчно. Если вы этого не сделаете, вы увидите все содержимое списка в одной строке.
Способ 3: записать все строки в файл одновременно, используя функцию writelines()
Два других метода, которые мы видели, записывали содержимое списка в файл построчно. Метод writelines() отличается. Этот метод принимает список в качестве входных данных и записывает список как есть в открытый файл.
Вот простая программа:
MyList = ["Самара", "Сочи", "Мурманск", "Анапа"] MyFile = open ('output.txt', 'w') MyFile.writelines (MyList) MyFile.close ()
Если вы используете команду для просмотра файла в командной строке Linux , вот что вы увидите в выводе:
Это не самый красивый вывод. Но это точное содержание списка.
Если вы хотите печатать построчно текст в файл с помощью функции writelines, вы все равно можете это сделать, но вам придется приложить дополнительные усилия.
Здесь вы можете изменить сам список и добавить символ новой строки после каждого элемента. И теперь, если вы напечатаете список с помощью writelines(), вы получите вывод построчно.
Вот пример программы для этого:
MyList = ["Самара", "Сочи", "Мурманск", "Анапа"] MyFile = open ('output.txt', 'w') MyList = map (lambda x: x + '\ n', MyList) MyFile.writelines (MyList) MyFile.close ()
Мы надеемся, что этот быстрый небольшой совет помог вам в написании списка в файл, используя Python. Если вы используете другой способ, поделитесь им с нами. Если статья помогла вам, пожалуйста, дайте нам знать, оставив комментарий ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Запись в файл Python. Перезапись файла Python
Высокоуровневый язык Python 3 имеет множество полезных средств, позволяющих взаимодействовать с текстовыми файлами. Вы можете как создавать документы для хранения информации, так и выполнять чтение, запись и удаление данных.
Сегодня поговорим о создании и записи файлов.
Создание файла, его открытие и закрытие
Работа с текстовым файлом в Python начинается с момента вызова функции open. Она принимает в качестве атрибутов путь к объекту на ПК и режим обработки. Вы можете указать абсолютный путь (это адрес размещения на жёстком диске) или относительный (речь идёт о координатах относительно папки проекта).
Что касается режима обработки файла, то при его выборе учитывайте его назначение («r» — для чтения, «w» — для записи). Таблица ниже позволит вам ознакомиться с режимами доступа к файлу в Python:

А вот пример простейшего взаимодействия с текстовым документом:
file = open("otus.txt", "w") file.write("hello world") file.close()Здесь функция open принимает относительный путь, открывая его для записи. При этом, если в папке файл otus.txt будет отсутствовать, метод open создает его автоматически, после чего откроет для него нужный режим обработки.
Метод close закрывает файл, а это необходимо сделать, выполнив нужные вам действия с переменной file (иначе потеряете информацию). Впрочем, можно обойтись и без close, используя связку операторов with as (переменная, которая ссылается на файл, должна быть прописана после конструкции):
with open("otus.txt", "w") as file: file.write("hello world")Метод write() для записи в файл в Python
В предыдущих примерах мы уже использовали метод write() . Он позволяет записывать любую строку в открытый файл. Помните, что строки в Python способны содержать не только текст, но и двоичные данные.
Запись в файл построчно выполняется посредством записи нужной вам строки с последующей записью \n — символа перевода строки.
Давайте ещё раз посмотрим на запись в файл с помощью метода write(). Синтаксис:
my_file.write(string);my_file = open("otus.txt", "w") my_file.write("Люблю Python!\nЭто крутой язык!") my_file.close()Код, представленный выше, создаст файл otus.txt , записав в него указанную строку.
Давайте теперь выполним запись списка поэлементно, где каждый элемент списка будет записан в новой строке:
lines = ["one", "two", "three"] with open(r"C:\otus.txt", "w") as file: for line in lines: file.write(line + '\n')Этот код позволит создать небольшой массив lines, содержащий три строковых элемента: «one», «two» и «three». Благодаря функции open и связке операторов with as произойдёт открытие текстового файла otus.txt в корневом каталоге жёсткого диска C. Далее произойдёт запись всех элементов списка с помощью write. Символ \n обеспечит, чтобы каждая запись была выполнена с новой строки.