Файловый ввод-вывод¶
Открыть файл file_path в режиме mode . Функция возвращает file object . Полная сигнатура функции приведена в официальной документации: open. Режим может принимать значения:
f. write ( text ) ¶
Записать строку text в файл.
Прочитать все данные из файла
Пример работы с файлом:
# Открываем файл для записи out_file = open('data.txt', 'w') # Пишем в файл две строки out_file.write('Hello\n') out_file.write('World\n') # Закрываем файл out_file.close() # Снова открываем этот же файл, но уже для чтения in_file = open('data.txt', 'r') # Файл — итерируемый объект. Следовательно, для # его построчного чтения можно использовать цикл for for line in in_file: print(f'Got line: line>') in_file.close()
Задачи¶
- Написать программу, которая будет получать у пользователя строку и записывать её в файл “data.txt”
- Разработать приложение, которое записывает в файл все строки, введенные пользователем. Признак конца ввода — пустая строка. Пример:
Введите имя файла: data.txt Начните вводить строки > one > two > three > Файл записан.
После выполнения программы должен появиться файл data.txt , содержащий три строки:
one two three
Введите имя файла: data.txt 1 one 2 two 3 three
Используйте метод строки rstrip() , чтобы избавиться от лишних переносов сток. После этого результат работы программы примет вид:
Введите имя файла: data.txt 1 one 2 two 3 three
one two three four five six seven eight nine ten
Будем разделять его на несколько файлов, в каждом из которых окажется не более трех строк:
Введите имя входного файла: data.txt Введите максимальное количество строк: 3
После выполнения программы должны быть созданы файлы 1.txt , 2.txt и так далее. В файле 1.txt будут сроки:
one two three
В файле 2.txt :
four five six
Дополнительные задачи¶
- Разработайте приложение, которое выводит N первых строк файла.
- Разработайте приложение, которое выводит N последних строк файла.
© Copyright Revision d00c0df4 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
Как прочитать файл в Python
Обработка файлов в Python не требует импорта модулей. Объект File предоставляет основные функции и методы, необходимые для управления файлами по умолчанию. Python предоставляет вам простые способы управления этими файлами. Для чтения данных из файла, в первую очередь, вам нужно открыть его в режиме чтения. Затем вы можете вызвать любой из методов, которые Python предоставляет для чтения из файла.
На самом деле существует несколько способов прочитать текстовый файл в Python. Функции чтения содержат различные методы, read(), readline() и readlines().
read ([число]) : Возвращает указанное количество символов из файла. если он опущен, он будет читать все содержимое файла.
readline() : Возвращает следующую строку файла.
readlines() : чтение всех строк в виде списка строк в файле
Считывание всего содержимого файла
with open("my_file.txt", "r") as my_file: str = my_file.read() print(str)
This is first line This is second line This is third line This is fourth line
Чтение только одной строки
with open("my_file.txt", "r") as my_file: str = my_file.readline() print(str)
This is my first line
Чтение данных с использованием размера
with open("my_file.txt", "r") as my_file: str = my_file.read(38) #читать с размером файла print(str)
This is my first line This is second line
Чтение всех строк в виде массива
with open("my_file.txt", "r") as my_file: str = my_file.readlines() print(str)
['This is first line\n', 'This is second line\n', 'This is third line\n', 'This is fourth line']
Прочитать файл по строкам в Python
Если вы хотите прочитать все строки из файла с большей эффективностью в памяти, вы можете использовать метод loop over.
with open("my_file.txt", "r") as my_file: for line in my_file: print(line)
This is first line This is second line This is third line This is fourth line
Позиции файлов
Метод Python tell()
Метод tell() возвращает текущую позицию указателя чтения / записи файла внутри файла.
with open("my_file.txt", "r") as my_file: str = my_file.readline() print(str) # Get the current cursor position of the file. pnt = my_file.tell() print(pnt)
This is first line 20
Метод поиска Python()
Метод seek() устанавливает текущее положение файла в смещении.
with open("my_file.txt", "r") as my_file: my_file.seek(20) str = my_file.readline() print(str) # bring file cursor to initial position my_file.seek(0) str = my_file.readline() print(str)
This is first line This is second line
Разделение строк из текстового файла в Python
Следующая программа Python, читающая текстовый файл и разбивающая его на отдельные слова в python
with open("my_file.txt", "r") as my_file: for line in my_file: str = line.split() print(str)
['This', 'is', 'first', 'line'] ['This', 'is', 'second', 'line'] ['This', 'is', 'third', 'line'] ['This', 'is', 'fourth', 'line']
Как считать данные из одной строки в Python 3?
Начал изучать Python и столкнулся с проблемой считывания (работаю в PyCharm).
Можно ли считывать данные как из одного потока в С++?
Входные данные:
>>>3 4
>>>2 1 4
>>>3 1 3 1
>>>1 2
И сразу хочу посчитать, сколько одинаковых чисел (просто инкрементирую элементы равные числу).
P.S. записывать входные данные не хотелось бы
- Вопрос задан более трёх лет назад
- 2668 просмотров
Python: потоковый ввод stdin
В общем (классическом) виде чтение с помощью stdin производится следующим образом:
import sys for line in sys.stdin: # rstrip('\n') "отрезает" от строки line идущий справа символ # перевода строки, ведь print сам переводит строку print(line.rstrip('\n'))
Если запустить эту программу, она будет работать вечно. Чтобы показать, что ввод закончен, пользователю недостаточно нажать Enter — компьютер не знает, завершил пользователь работу или будет еще что-то вводить (при этом Enter превратится в пустую строку). Вместо этого надо нажать Ctrl + D (если работаете в консоли Linux или IDE PyCharm) либо Ctrl + Z, затем Enter (если работаете в консоли Windows).
Если вы работаете в IDE Wing, кликните правой кнопкой мыши и выберите Send EOF, затем нажмите Enter. Это запишет в поток ввода специальный символ EOF (end of file), который отмечает конец ввода.
Через sys.stdin можно вычитать всё, что попадает через ввод в список (количество строк ввода заранее неизвестно):
data = list(map(str.strip, sys.stdin))
Все строки можно считать (с сохранением символов перевода строки) в список вот таким образом:
data = sys.stdin.readlines()
Cчитать многострочный текст из стандартного потока ввода в текстовую переменную можно вот так:
str_data = sys.stdin.read()