Как записать список в файл с

Обновлено: 08.07.2024

Оригинальная версия продукта: Visual Studio
Исходный номер КБ: 816149

Аннотация

В разделе Чтение текстовых файлов этой статьи описывается, как использовать класс для чтения StreamReader текстового файла. Разделы Write a text file (пример 1) и разделы Write a text file (пример 2) описывают, как использовать класс для записи StreamWriter текста в файл.

Чтение текстового файла

Следующий код использует класс для открытия, чтения и закрытия StreamReader текстового файла. Вы можете передать путь текстового файла конструктору, чтобы StreamReader открыть его автоматически. Метод читает каждую строку текста и приращение указателя файла к следующей строке по ReadLine мере чтения. Когда метод достигает конца файла, он возвращает ReadLine ссылку null. Дополнительные сведения см. в группе StreamReader Class.

Создайте пример текстового файла в Блокнот. Выполните приведенные ниже действия.

  1. Вклеить текст hello world в Блокнот.
  2. Сохраните файл как Sample.txt.

Начните Microsoft Visual Studio.

В меню File указать на New, а затем выбрать Project.

Добавьте следующий код в начале файла Class1.cs:

Добавьте в метод следующий Main код:

В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Нажмите КНОПКУ ВВОД, чтобы закрыть окно консоли. В окне Консоли отображается содержимое файла Sample.txt:

Написать текстовый файл (пример 1)

Следующий код использует класс для открытия, записи и закрытия StreamWriter текстового файла. Аналогично классу, вы можете передать путь текстового файла конструктору, чтобы открыть StreamReader StreamWriter его автоматически. Метод WriteLine записывает полную строку текста в текстовый файл.

Запустите Visual Studio.

В меню File указать на New, а затем выбрать Project.

Добавьте следующий код в начале файла Class1.cs:

Добавьте в метод следующий Main код:

В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Этот код создает файл, которыйTest.txt на диске C. Open Test.txt в текстовом редакторе, например Блокнот. Test.txt содержит две строки текста:

Написать текстовый файл (пример 2)

Следующий код использует класс для открытия, записи и закрытия StreamWriter текстового файла. В отличие от предыдущего примера, этот код передает конструктору два дополнительных параметра. Первый параметр — путь к файлу и имя файла. Второй параметр true указывает, что файл открыт в режиме приложения. Если вы указываете для второго параметра, содержимое файла перезаписывается при каждом запуске false кода. Третий параметр Unicode указывает, чтобы StreamWriter кодировать файл в формате Unicode. Можно также указать следующие методы коди-кодинга для третьего параметра:

Метод похож на метод, за исключением того, что метод не автоматически встраит комбинацию символов возврата или строки Write WriteLine Write (CR/LF). Это полезно, когда нужно одновременно писать по одному символу.

Запустите Visual Studio.

В меню Файл выберите пункт Создать и затем пункт Проект.

Добавьте следующий код в начале файла Class1.cs:

Добавьте в метод следующий Main код:

В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Этот код создает файл, которыйTest1.txt на диске C. Open Test1.txt в текстовом редакторе, например Блокнот. Test1.txt содержит одну строку текста: 0123456789.

Полное перечисление кода для чтения текстового файла

Полное перечисление кода для записи текстового файла (версия 1)

Полное перечисление кода для записи текстового файла (версия 2)

Устранение неполадок

Для всех манипуляций с файлами, это хорошая практика программирования, чтобы обернуть код в блок try-catch-finally для обработки ошибок и исключений. В частности, может потребоваться освободить ручки для файла в окончательном блоке, чтобы файл не был заблокирован на неопределенный срок. Некоторые возможные ошибки включают файл, который не существует, или файл, который уже используется.

Примеры работы с текстовыми файлами. Модификация файлов. Сортировка данных в файлах. Конвертирование данных файла в массив

В данной теме наводятся примеры решения известных задач, возникающих при обработке текстовых файлов на языке C++. Проработав решения этих задач, вы научитесь обрабатывать массивы строчных данных, управлять распределением памяти а также использовать средства C++ для работы с текстовыми файлами.

Содержание

  • 2. Функция CountLinesInFile() . Подсчет количества строк в текстовом файле
  • 3. Функция GetStringsFromFileC() . Получить массив (список) строк типа char* из текстового файла
  • 4. Функция GetStringsFromFileS() . Получить массив строк типа string из текстового файла
  • 5. Функция SetStringsToFileS() . Записать массив (список) строк типа string в текстовый файл
  • 6. Функция ChangeStringInFileC() . Замена строки в текстовом файле
  • 7. Функция RemoveStringFromFileByIndex() . Удаление строки из файла по его номеру
  • 8. Функция InsertStringToFile() . Вставка строки в заданную позицию в файле
  • 9. Функция SwapStringsInFile() . Обмен местами двух строк в файле
  • 10. Функция ReverseStringsInFile() . Реверсирования строк файла (перестановка строк файла в обратном порядке)
  • 11. Функция SortStringsInFile() . Сортировка строк в файле
  • Связанные темы

Поиск на других ресурсах:

1. Как определить, что данные в текстовом файле закончились?

Для определения конца файла используется функция eof() . Функция возвращает результат типа bool . Прототип функции следующий

здесь std – пространство имен, в котором объявлена функция eof() .

Если при вызове функции текущий указатель чтения указывает на конец файла, то функция возвращает true . В противном случае функция возвращает false .

Пример 1.

Ниже приведен фрагмент кода, в котором используется функция eof() для определения, достигнут ли конец файла, которому соответствует экземпляр с именем inputFile

Пример 2.

Чаще всего функция eof() используется в цикле while при чтении строк файла

Как только будет достигнут конец файла inputFile , то произойдет выход из цикла.

2. Функция CountLinesInFile() . Подсчет количества строк в текстовом файле

Функция CountLinesInFile() возвращает количество строк в текстовом файле.

Использование функции GetStringsFromFileC() может быть, например, следующим:

4. Функция GetStringsFromFileS() . Получить массив строк типа string из текстового файла

Работа с типом string более удобна чем с типом char *. В следующем фрагменте кода реализована функция GetStringsFromFileS() , читающая строки из текстового файла и записывающая их в массив (список) типа string . Данная функция использует функцию CountLinesInFile() , которая описывается в пункте 2 данной темы.

Использование функции GetStringsFromFileS() может быть, например, следующим

Результат работы программы (содержимое файла TextFile1.txt ):

5. Функция SetStringsToFileS() . Записать массив (список) строк типа string в текстовый файл

При работе с текстовыми файлами полезна функция SaveStringsToFileS() , которая записывает массив строк в файл. В нижеследующих примерах эта функция будет использоваться для записи модифициованного списка в файл.

Ниже приведен пример использования функции SetStringsToFileS() .

6. Функция ChangeStringInFileC() . Замена строки в текстовом файле

В примере приведена функция, заменяющая строку в файле в заданной позиции. Данная функция использует следующие функции:

Данная функция не использует дополнительный файл для копирования. Функция получает строки файла в виде списка lines, которые служат копией файла. Затем происходит запись этих строк в этот же файл за исключением строки, которую нужно заменить в файле. В позиции замены записывается входная строка замены. Таким образом происходит замена строки в текстовом файле.

Использование данной функции може быть, например, следующим:

По желанию, можно изменить ввод входных данных (имя файла, позиция, строка замены).

7. Функция RemoveStringFromFileByIndex() . Удаление строки из файла по его номеру

Удаление строки из файла по его номеру можно выполнять по примеру п. 6 (замена строки в текстовом файле).
Общий алгоритм следующий:

  • прочитать все строки файла в массив (список);
  • удалить строку из массива;
  • записать модифицированный массив обратно в файл.

Для формирования списка строк можно использовать функции GetStringsFromFileC() и GetStringsFromFileS() , которые описаны в пунктах 3 и 4.

Текст функции удаления строки по его номеру следующий.

Использование функции может быть, например, следующим

8. Функция InsertStringToFile() . Вставка строки в заданную позицию в файле

Подход такой же, как в предыдущих пунктах. Нужно получить строки файла в виде массива (тип string или char *). Затем нужно вставить строку в массив и записать измененный массив строк обратно в файл.
Если значение позиции вставки равно количеству элементов в файле, то строка добавляется в конец файла.

Вызов функции InsertStringToFile() в функции main() может быть следующим.

9. Функция SwapStringsInFile() . Обмен местами двух строк в файле

Сокращенный алгоритм функции SwapStringsInFile() следующий:

  1. Прочитать строки файла в список.
  2. Поменять строки в списке.
  3. Записать измененный список обратно в файл.

Текст функции обмена строк следующий.

Вызов функции SwapStringsInFile() из функции main() может быть следующим

10. Функция ReverseStringsInFile() . Реверсирования строк файла (перестановка строк файла в обратном порядке)

Алгоритм метода следующий:

  • считать строки из файла и записать их в массив;
  • обменять местами элементы массива так, чтобы строки массива размещались в обратном порядке;
  • записать измененный массив снова в файл

Текст функции ReverseStringsInFile() следующий

Использование ReverseStringsInFile () может быть, например, следующим

11. Функция SortStringsInFile() . Сортировка строк в файле

В примере демонстрируется сортировка строк файла с помощью метода вставки. Предварительно строки копируются в массив и там сортируются. Затем, отсортированный массив строк обратно записывается в файл.

До этого при вводе-выводе данных мы работали со стандартными потоками — клавиатурой и монитором. Теперь рассмотрим, как в языке C реализовано получение данных из файлов и запись их туда. Перед тем как выполнять эти операции, надо открыть файл и получить доступ к нему.

В языке программирования C указатель на файл имеет тип FILE и его объявление выглядит так:

С другой стороны, функция fopen() открывает файл по указанному в качестве первого аргумента адресу в режиме чтения ("r"), записи ("w") или добавления ("a") и возвращает в программу указатель на него. Поэтому процесс открытия файла и подключения его к программе выглядит примерно так:

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

При чтении или записи данных в файл обращение к нему осуществляется посредством файлового указателя (в данном случае, myfile).

Если в силу тех или иных причин (нет файла по указанному адресу, запрещен доступ к нему) функция fopen() не может открыть файл, то она возвращает NULL. В реальных программах почти всегда обрабатывают ошибку открытия файла в ветке if , мы же далее опустим это.

Объявление функции fopen() содержится в заголовочном файле stdio.h, поэтому требуется его подключение. Также в stdio.h объявлен тип-структура FILE.

После того, как работа с файлом закончена, принято его закрывать, чтобы освободить буфер от данных и по другим причинам. Это особенно важно, если после работы с файлом программа продолжает выполняться. Разрыв связи между внешним файлом и указателем на него из программы выполняется с помощью функции fclose() . В качестве параметра ей передается указатель на файл:

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

Чтение из текстового файла и запись в него

fscanf()

Функция fscanf() аналогична по смыслу функции scanf() , но в отличии от нее осуществляет форматированный ввод из файла, а не стандартного потока ввода. Функция fscanf() принимает параметры: файловый указатель, строку формата, адреса областей памяти для записи данных:

Возвращает количество удачно считанных данных или EOF. Пробелы, символы перехода на новую строку учитываются как разделители данных.

Допустим, у нас есть файл содержащий такое описание объектов:

Тогда, чтобы считать эти данные, мы можем написать такую программу:

В данном случае объявляется структура и массив структур. Каждая строка из файла соответствует одному элементу массива; элемент массива представляет собой структуру, содержащую строковое и два числовых поля. За одну итерацию цикл считывает одну строку. Когда встречается конец файла fscanf() возвращает значение EOF и цикл завершается.

fgets()

Функция fgets() аналогична функции gets() и осуществляет построчный ввод из файла. Один вызов fgets() позволят прочитать одну строку. При этом можно прочитать не всю строку, а лишь ее часть от начала. Параметры fgets() выглядят таким образом:

Такой вызов функции прочитает из файла, связанного с указателем myfile, одну строку текста полностью, если ее длина меньше 50 символов с учетом символа '\n', который функция также сохранит в массиве. Последним (50-ым) элементом массива str будет символ '\0', добавленный fgets() . Если строка окажется длиннее, то функция прочитает 49 символов и в конце запишет '\0'. В таком случае '\n' в считанной строке содержаться не будет.

В этой программе в отличие от предыдущей данные считываются строка за строкой в массив arr. Когда считывается следующая строка, предыдущая теряется. Функция fgets() возвращает NULL в случае, если не может прочитать следующую строку.

getc() или fgetc()

Функция getc() или fgetc() (работает и то и другое) позволяет получить из файла очередной один символ.

Приведенный в качестве примера код выводит данные из файла на экран.

Запись в текстовый файл

Также как и ввод, вывод в файл может быть различным.

  • Форматированный вывод. Функция fprintf ( файловый_указатель, строка_формата, переменные ) .
  • Посточный вывод. Функция fputs ( строка, файловый_указатель ) .
  • Посимвольный вывод. Функция fputc() или putc( символ, файловый_указатель ) .

Ниже приводятся примеры кода, в которых используются три способа вывода данных в файл.

Запись в каждую строку файла полей одной структуры:

Построчный вывод в файл ( fputs() , в отличие от puts() сама не помещает в конце строки '\n'):

Пример посимвольного вывода:

Чтение из двоичного файла и запись в него

С файлом можно работать не как с последовательностью символов, а как с последовательностью байтов. В принципе, с нетекстовыми файлами работать по-другому не возможно. Однако так можно читать и писать и в текстовые файлы. Преимущество такого способа доступа к файлу заключается в скорости чтения-записи: за одно обращение можно считать/записать существенный блок информации.

При открытии файла для двоичного доступа, вторым параметром функции fopen() является строка "rb" или "wb".

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

Функции fread() и fwrite() принимают в качестве параметров:

  1. адрес области памяти, куда данные записываются или откуда считываются,
  2. размер одного данного какого-либо типа,
  3. количество считываемых данных указанного размера,
  4. файловый указатель.

Эти функции возвращают количество успешно прочитанных или записанных данных. Т.е. можно "заказать" считывание 50 элементов данных, а получить только 10. Ошибки при этом не возникнет.

Пример использования функций fread() и fwrite() :

Здесь осуществляется попытка чтения из первого файла 50-ти символов. В n сохраняется количество реально считанных символов. Значение n может быть равно 50 или меньше. Данные помещаются в строку. То же самое происходит со вторым файлом. Далее первая строка присоединяется ко второй, и данные сбрасываются в третий файл.

Favorite

Добавить в избранное

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

(3 оценок, среднее: 5,00 из 5)

3 способа записи списка в файл на Python

К раткое описание: В этой краткой статье демонстрируются три способа записи списка в файл на языке сценариев Python.

В предыдущем совете по написанию сценариев мы показали вам, как выполнять команды Shell в Python. В этой статье мы покажем вам несколько способов записи списка в файл на Python.

Запись списка в файл на Python

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

Метод 1: Запись списка в файл строка за строкой в ​​Python, используя print

Команда печати в Python может использоваться для печати содержимого списка в файл. Элементы списка будут добавлены в новой строке в выходном файле.

Вот пример программы на Python для вашей справки:

Файл output.txt открывается в режиме записи. Цикл for в python повторяется для каждого элемента в списке. Команды печати записывают элемент в открытый файл.

Если вы используете команду cat для отображения содержимого выходного файла , это будет так:

Самара
Сочи
Мурманск
Анапа

Как видите, элементы списка записывались построчно в выходной файл.

Если вы хотите сохранить предыдущее содержимое файла, вы можете открыть файл в режиме добавления, используя опцию «a» вместо «w».

Способ 2: записать список в файл, используя функцию записи в Python

Теперь давайте посмотрим, как можно сохранить список в файл на Python. Мы собираемся использовать функцию Write().

Функция write() принимает строку в качестве аргумента. Итак, мы снова будем использовать цикл for для итерации каждого элемента в списке и записи его в файл.

Вот пример программы на Python:

Способ 3: записать все строки в файл одновременно, используя функцию writelines()

Два других метода, которые мы видели, записывали содержимое списка в файл построчно. Метод writelines() отличается. Этот метод принимает список в качестве входных данных и записывает список как есть в открытый файл.

Вот простая программа:

Если вы используете команду для просмотра файла в командной строке Linux , вот что вы увидите в выводе:

Это не самый красивый вывод. Но это точное содержание списка.

Если вы хотите печатать построчно текст в файл с помощью функции writelines, вы все равно можете это сделать, но вам придется приложить дополнительные усилия.

Здесь вы можете изменить сам список и добавить символ новой строки после каждого элемента. И теперь, если вы напечатаете список с помощью writelines(), вы получите вывод построчно.

Вот пример программы для этого:

Мы надеемся, что этот быстрый небольшой совет помог вам в написании списка в файл, используя Python. Если вы используете другой способ, поделитесь им с нами. Если статья помогла вам, пожалуйста, дайте нам знать, оставив комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: