Работа с файлами в Python. Чтение и запись
Файл — это контейнер для хранения данных. Когда мы хотим читать из файла или записывать в него, нам нужно сначала его открыть. После того, как мы закончили чтение/запись, нам нужно закрыть файл, чтобы освободить ресурсы, связанные с ним.
Таким образом, в Python операции с файлами выполняются в следующем порядке:
чтение или запись;
Открыть файл в Python
В Python для открытия файлов используется метод open(). Например, у нас есть файл test.txt со следующим содержимым:
Теперь попробуем открыть этот файл с помощью функции open():
# Открываем файл в текущем каталоге
file1 = open ( «test.txt» )
Здесь мы создали файловый объект с именем file1 . Его можно использовать для работы с файлами и каталогами.
По умолчанию файлы открыты в режиме чтения (не могут быть изменены). Вышеприведенный код равнозначен:
file1 = open ( «test.txt» , «r» )
Здесь «r» означает, что файл открыт для чтения.
| Режим | Описание |
| r | Открыть файл для чтения. (используется по умолчанию) |
| w | Открыть файл для записи. Создает новый файл, если он не существует, или удаляет содержимое файла, если он существует. |
| x | Открыть файл для эксклюзивного создания. Если файл уже существует, операция завершится неудачно. |
| a | Открыть файл для добавления данных в конец файла без удаления текущего содержимого. Создает новый файл, если он не существует. |
| t | Открыть файл в текстовом режиме. (используется по умолчанию) |
| b | Открыть файл в двоичном режиме. |
| + | Открыть файл для обновления (чтение и запись). |
Вот несколько простых примеров того, как открыть файл в разных режимах:
file1 = open ( «test.txt» ) # равнозначен ‘r’ или ‘rt’
file1 = open ( «test.txt» , ‘w’ ) # запись в текстовом режиме
file1 = open ( «img.bmp» , ‘r+b’ ) # чтение и запись в двоичном режиме
Чтение файлов в Python
В Python для чтения файлов используется метод read(). Например:
# Открываем файл
file1 = open ( «test.txt» , «r» )
# Читаем файл
read_content = file1 . read ( )
print ( read_content )
This is a test file.
Hello from the test file.
Обратите внимание на строку:
read_content = file1 . read ( )
Здесь file1.read() читает файл test.txt и сохраняет его в переменную read_content .
Закрыть файл в Python
Когда мы закончили выполнять операции с файлом, нам нужно его правильно закрыть. Закрытие файла освобождает ресурсы, которые были задействованы для работы с ним. Это делается с помощью метода close(). Например:
# Открываем файл
file1 = open ( «test.txt» , «r» )
# Читаем файл
read_content = file1 . read ( )
print ( read_content )
# Закрываем файл
file1 . close ( )
This is a test file.
Hello from the test file
Здесь мы использовали метод close() для закрытия файла. После выполнения операции с файлом мы всегда должны закрывать файл; это важный момент.
Обработка исключений в файлах
Если во время выполнения какой-либо операции с файлом возникает исключение, программа завершает свое выполнение, не закрывая при этом файлы. Одним из решений является использование блока try. finally .
file1 = open ( «test.txt» , «r» )
read_content = file1 . read ( )
print ( read_content )
# закрываем файл
file1 . close ( )
Здесь мы закрыли файл в блоке finally , поскольку блок finally всегда выполняется, то файл будет закрыт, даже если выбросится исключение.
Использование синтаксиса with…open
В Python мы можем использовать синтаксис with. open для автоматического закрытия файла. Например:
with open ( «test.txt» , «r» ) as file1 :
read_content = file1 . read ( )
print ( read_content )
Примечание: Поскольку в данном варианте не нужно беспокоиться о закрытии файла, рекомендуется всегда использовать синтаксис with. open .
Запись в файл в Python
При записи в файл необходимо помнить две вещи:
Если мы пытаемся открыть несуществующий файл, создается новый файл.
Если файл уже существует, его содержимое удаляется, а в файл добавляется новое содержимое.
Для того чтобы записать данные в файл в Python, нам нужно открыть его в режиме записи, указав «w» в функции open() в качестве второго аргумента.
Предположим, у нас нет файла с именем test2.txt. Давайте посмотрим, что произойдет, если мы выполним запись в файл test2.txt:
with open ( ‘test2.txt’ , ‘w’ ) as file2 :
# Выполняем запись в файл test2.txt
file2 . write ( ‘Programming is Fun.’ )
file2 . write ( ‘Python for beginners’ )
Здесь создается новый файл test2.txt с содержимым, указанным внутри методов write():
Методы для работы с файлами в Python
| Метод | Описание |
| close() | Закрывает открытый файл. Ничего не происходит, если файл уже закрыт. |
| detach() | Отделяет базовый двоичный буфер от TextIOBase и возвращает его. |
| fileno() | Возвращает целое число файла (файловый дескриптор). |
| flush() | Очищает буфер записи в файловом потоке. |
| isatty() | Возвращает True, если поток файлов является интерактивным. |
| read(n) | Считывает не более n символов из файла. Выполняет чтение до конца файла, если n является отрицательным или None. |
| readable() | Возвращает True, если из файлового потока можно считать данные. |
| readline(n=-1) | Считывает и возвращает одну строку из файла. Считывает не более n байт, если указано. |
| readlines(n=-1) | Считывает и возвращает список строк из файла. Считывает не более n байт/символов, если указано. |
| seek(offset,from=SEEK_SET) | Изменяет позицию файла на offset байтов, относительно from (start, current, end). |
| seekable() | Возвращает True, если файловый поток поддерживает произвольный доступ. |
| tell() | Возвращает целое число, представляющее текущую позицию файлового объекта. |
| truncate(size=None) | Изменяет размер файлового потока до size байт. Если размер не указан, размер изменяется относительно текущего местоположения. |
| writable() | Возвращает True, если в файловый поток можно выполнить запись. |
| write(s) | Записывает строку (s) в файл и возвращает количество записанных символов. |
| writelines(lines) | Записывает список строк (lines) в файл. |
Работа с файлами Python Запись и считывание информации в файлы в питон
В этом уроке мы разберём, как читать информацию из файлов и записывать ее в файлы в Питоне. В файлы записываются результаты работы программы, которые можно потом использовать в других приложениях. Поэтому необходимо уметь в Питон записывать информацию в файлы Также в файлах может храниться большой объем входной информации, которую должна обработать программа. Поэтому необходимо уметь считывать информацию из файлов в python.
Чтобы начать работу с файлом в Питон, нужно открыть файл. Открыть файл в Питон можно с помощью команды
with open(“file.ext”, mode) as name: имя перменной файла
with, open и as это ключевые слова. Команда open() открывает файл с именем “file” с разрешением файла “ext”. Параметр mode отвечает за режим открытия файла. Необходимо указать полный путь к файлу, причем используются двойные слеши. например открытие файла на чтение
with open(«C:\Users\user\Desktop\Win\Python\settings\data.txt»,»r») as f:
Существуют различные режимы работы с файлом в python. Файл можно открыть только для считывания информации из файла, можно открыть для добавления в него информации, можно просто создать новый файл с заданным именем. Название и расширение файла пишется в кавычках, расширение файла пишется после названия файла через точку, режим открытия файла пишется в кавычках. Разберем все режимы работы с файлом в Python
Чтение из файла в Python
Разберём режим чтения из файла “r”. Создайте новую программу в Spyder, сохраните её на Рабочем столе. Создайте на рабочем столе текстовый документ text с расширением txt. Внутри файла напишите следующий текст.
Привет! Я первая строка.
Вторая строка.
Третья строка.
Чтобы вывести в программе Питон в консоль весь файл, используется команда f.read() .
Пример. Программа python,которая читает весь файл и выводит его в консоль.
with open(«text.txt», «r») as f:
text = f.read()
print(text)
Команда f.read(n) может принимать аргумент n, n это количество знаков с начала, которое будет считываться из файла. Например, если будет исполняться команда f.read(50), то программа выведет 50 знаков с начала файла.
Пример. Программа в Python для считывания опредленного количества знаков
with open(«text.txt», «r») as f:
text = f.read(50)
print(text)
Если вы хотите считать текст не с начала файла, а с какого-либо символа, используйте команду f.seek(n) , n это символ, с которого начнётся чтение файла. Файл начинается с нулевого символа.
Пример. Программа на Python, которая счтитывает информацию из файла с начала второй строки.
with open(«text.txt», «r») as f:
f.seek(27)
text = f.read(50)
print(text)
Python позволяет считать все строки текста файла в отдельный массив с помощью команды f.readlines()
Пример. Программа python выводит в консоль третью строку файла.
with open(«text.txt», «r») as f:
text = f.readlines()
print(text[2])
Для считывания строк файла используется команда f.readline() Команда будет считывать одну строку из файла. Если использовать эту команду несколько раз, то будет считываться строка за строкой Например, если вы написали две команды f.readline() , то первая команда считает первую строку, вторая команда считает вторую строку.
Пример программы python считывание строк из файла с помощью команды f.readline().
with open(«text.txt», «r») as f:
text = f.readline()
print(text)
print(f.readline())
Часто отдельные части данных разделены каким-либо знаком. Python заменять эти знаки из строк с помощью команды f.replace(start, final) , где start это знак, который надо заменить, final это знак, на который надо заменить.
Пример программы, заменяющей все пробелы в строке на знак +.
string = «Всем привет! Я строка.»
print(string.replace(» «, «+»))
Запись данных в файл в python
Разберём режим добавления информации в файл в Питон “ w” Для добавления информации в файл в python используется команда f.write(“text”) Эта команда удаляет весь старый текст в файле и вместо него пишет новый. После исполнения программы с этой командой зайдите в тот же файл, там не должно быть старых строк, вместо них будет текст, который вы написали в команде.
Пример программа на Python запись текста в файл с использованием команды f.write().
with open(«text.txt», «w») as f:
f.write(«Текст.»)
Вместо этого текста
Привет! Я первая строка.
Вторая строка.
Третья строка.
Должна появиться эта строка
Текст.
Чтобы написать несколько строк, используется команда f.writelines(line) , где line это массив со строками, которые нужно записать в файл
Программа на Python для записи массива строк в файл
with open(«text.txt», «w») as f:
f.writelines([«Первый элемент. «, «Вторая строка.»])
Разберём режим добавления информации “a” . Этот режим отличается от “w” тем, что он не удаляет старую информацию. Все команды в режиме “a” идентичны командам в режиме “w” , но в режиме “a” команды не удаляют старый текст, а записывают текст в конце файла.
Часто в программах на python входная информация считывается из файла, обрабатывается и результат записывается в новый выходной файл. Разберём большой пример работы с файлами в Python. Дан текстовый файл data с двумя столбцами и десятью строками однозначных или двузначных чисел. Числа разделены пробелом. Для каждой строки нужно найти среднее этих чисел и вывести их в новый текстовый файл result.
Файл data.
11 47
59 15
2 52
64 48
58 88
59 86
37 39
19 92
48 85
16 78
Введём массив для обычных строк line[] , массив для строк без пробелов aC[], массив для чисел в каждом столбце a1[] и a2[] и массив res[], в котором будут находиться средние значения.
Откроем файл data.txt и считаем из него числа. Введём цикл for на 10 итераций (повторений) по количеству строк. Считаем строку под номером i с помощью команды f.readline() и запишем её в массив с индексом line[i]
line[i] = f.readline()
Чтобы получить доступ к каждому чилу в строке, необходимо воспользоваться методом split, который удаляет разделитель и записывает все элементы строки в массив уже без разделителя. Подробнее о работе со строками в python
Для считывания всех строк файла и перевода их в массивы необходимо написать следующий код
line = <> # строки
with open(«C:\Users\user\Desktop\Win\Python\settings\data.txt»,»r») as f:
for i in range(10):
line[i] = f.readline()
stroka=line[i].split(‘ ‘)
Чтобы получить из строки stroka числовые значения первого элемента и второго, воспользуемся функцией int(). В массив res[i] запишем среднее арифметическое двух элементов строки
Чтобы записать все результаты в новый файл, откроем файл result.txt в режиме “a”. С помощью цикла for запишем все результаты в отдельные строки.
with open(«C:\Users\user\Desktop\Win\Python\settings\result.txt», «a») as result:
for i in range(10):
res[i] = str(res[i])
result.write(res[i] + » «)
Полный код программы python считывание числовых столбцов из файла и запись в файл столбца средних значений
line = <> # строки
res=<>
with open(«C:\Users\user\Desktop\Win\Python\settings\data.txt»,»r») as f:
for i in range(10):
line[i] = f.readline()
stroka=line[i].split(‘ ‘)
a=int(stroka[0])
b=int(stroka[1])
res[i]=(a+b)/2
with open(«C:\Users\user\Desktop\Win\Python\settings\result.txt», «a») as result:
for i in range(10):
res[i] = str(res[i])
result.write(res[i] + » «)
Вернуться к содержанию
Следующая тема Библиотека NumPy в Python матрицы в питон
Как прочитать текстовый файл в список в Python (с примерами)
Вы можете использовать один из следующих двух методов для чтения текстового файла в список в Python:
Способ 1: Используйте open()
#define text file to open my_file = open('my_data.txt', 'r') #read text file into list data = my_file.read()
Способ 2: использовать loadtxt()
from numpy import loadtxt #read text file into NumPy array data = loadtxt('my_data.txt')
В следующих примерах показано, как использовать каждый метод на практике.
Пример 1: Чтение текстового файла в список с помощью open()
В следующем коде показано, как использовать функцию open() для чтения текстового файла с именем my_data.txt в список в Python:
#define text file to open my_file = open('my_data.txt', 'r') #read text file into list data = my_file.read() #display content of text file print(data) 4 6 6 8 9 12 16 17 19
Пример 2: Чтение текстового файла в список с помощью loadtxt()
В следующем коде показано, как использовать функцию NumPy loadtxt() для чтения текстового файла с именем my_data.txt в массив NumPy:
from numpy import loadtxt #import text file into NumPy array data = loadtxt('my_data.txt') #display content of text file print(data) [ 4. 6. 6. 8. 9. 12. 16. 17. 19.] #display data type of NumPy array print(data. dtype ) float64
Хорошая вещь в использовании loadtxt() заключается в том, что мы можем указать тип данных при импорте текстового файла с помощью аргумента dtype .
Например, мы можем указать текстовый файл для импорта в массив NumPy как целое число:
from numpy import loadtxt #import text file into NumPy array as integer data = loadtxt('my_data.txt', dtype='int') #display content of text file print(data) [ 4 6 6 8 9 12 16 17 19] #display data type of NumPy array print(data. dtype ) int64
Примечание.Полную документацию по функции loadtxt() можно найти здесь .
Дополнительные ресурсы
Следующие руководства объясняют, как читать другие файлы в Python:
Как прочитать файл в список в Python
Чтение файлов в Python — это достаточно тривиальная процедура. Но несмотря на внешнюю простоту, здесь может возникнуть ряд вопросов, которые новичков могут поставить в ступор. Так, например, если не указать кодировку utf-8 при открытии файла, то вы можете получить ошибку при чтении файлов в кириллице.
Чтение файла в список — это операция требуется для многих задач. Если Вы знаете PHP, то знаете, что в PHP есть функция file, которая читает файл и преобразует его в массив.
В следующем примере мы реализуем подобную функцию в Python.
# читает файл в список def read2list(file):
# открываем файл в режиме чтения utf-8
file = open(file, ‘r’, encoding=’utf-8′)
# читаем все строки и удаляем переводы строк
lines = file.readlines()
lines = [line.rstrip(‘\n’) for line in lines]
Используем так:
lines = read2list(‘file.txt’)
print(lines)

![]()
Создано 24.12.2019 09:36:06
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.