Как прочитать определённую строку в файле?
Хелло у меня небольшая проблема.
Мне надо что бы в print выводилась мне нужная строка но у меня при запуске появляется ошибка:
Traceback (most recent call last):
File «auth.py», line 8, in
regl = regf.read(«\n»)
TypeError: argument should be integer or None, not ‘str’
1 2 3 4 5
regf = open('regfile.txt') regl = regf.read("\n") print(regl) regp = regf.read("\n\n") print(regp)
P.S.
Это первая моя тема и вобще я в первые на форуме так что сорян.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Прочитать определённую строку файла и поместить её в переменную
Всем привет! Необходимо прочитать определённую строку файла ,и поместить эту строку в переменную .

Как при нажатии на кнопку прочитать определенную строку в текстовом файле?
Всем привет 🙂 мне надо по нажатию на кнопку прочитать файл на СД и записать в стринг с.
Как прочитать из файла определенную строку
есть файл C:\file.ini в нем такой текст lol lol lol Как прочитать 2 (вторую) строку?

Как прочитать определенную строку(и) из файла?
Доброго времени суток! Не стоит сразу обращать внимание на заголовок сабжа, т.к. в подобных темах я.
Чтение данных из файла по словам
Задание
записать три числа из файла в три переменные и потом сложить их
Файл
10 3
2
(первые два в одной строке последнее во второй)
никак не могу понять как с этим работать в питоне, может и можно что то придумать если будет именно такой формат, а если нет? Хотелось бы в этом разобраться поскорее(я думаю в питоне все просто должно быть, просто я в нем не силен)
можете что нибудь посоветовать?
Добавлено через 38 минут
и как записать целочисленный тип в файл без перевода в строку
(функция write() только строковый тип принимает. )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Чтение файла по словам
Здоров! Проблемы с чтением файла: функция должна прочитать одно слово и передать к buff. Каждое.
Чтение из текстового файла в массив с сортировкой по словам
Тема как-то коряво сформулирована, опишу тут. Допустим есть текстовый файл: Название.
Чтение и отбор записей из файла по словам (отделяя пробелами)
Здравствуйте, я совсем новичок, но у меня большая необходимость в том, чтобы программа читала.
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
а что вам мешает считать весь файл и разбить на цифры по пробелу?
Сообщение от G36nI 
и как записать целочисленный тип в файл без перевода в строку
(функция write() только строковый тип принимает. )
никак! все что записано в файле — это строки. поэтому и пишем строки.
Регистрация: 05.08.2018
Сообщений: 30
Сообщение от Semen-Semenich 
а что вам мешает считать весь файл и разбить на цифры по пробелу?
никак! все что записано в файле — это строки. поэтому и пишем строки.
Извините, я в питоне плохо разбираюсь, может можно какой нибудь класс сделать который содержит сам файл, кол во слов которые уже были считаны, чтобы под каждый тип файлов( N строк на M слов) можно было считывать данные в переменную поочередно, как в плюсах
1 2 3
ifstream file_in("ab.txt"); int a, b; file_in >> a >> b;
То есть без разницы сколько в файле строк и слов
Можно ли функцию какую нибудь сделать чтобы такое реализовать?
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
в питоне динамическая типизация переменных поэтому менять тип переменной можно в любом месте кода. конкретно под ваше задание
1 2 3 4 5 6 7
with open('test.txt') as f_input: list_data = f_input.read().split() # читаем с файла разбиваем по пробелам list_number = [int(num) for num in list_data] # список строк в список чисел result = sum(list_number) with open('testout.txt','w') as f_out: f_out.write(str(result)) # пишем результат в файл в строковом типе
то же в пару строк
with open('test.txt') as f_input, open('testout.txt','w') as f_out: f_out.write(str(sum(map(int, f_input.read().split()))))
Сообщение от G36nI 
можно было считывать данные в переменную поочередно
считываете в список получаете значения в переменную по индексам или множественное присвоение
1 2 3 4 5 6 7 8 9 10
>>> a,b,c,d = [1,2,3,4] >>> a 1 >>> b 2 >>> c 3 >>> d 4 >>>
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
В качестве примеров чтения из файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
with open(file) as f: # прочитать строку сдвинув указатель итератора на следующую, # разделить по пробелам в список, список распаковать на две переменные x,y = next(f).split() z = next(f) # точно также прочитать еще одну строку s = sum(map(int ,[x,y,z])) print(s) with open(file) as f: # прочитать строку стандартным методом, # разделить по пробелам в список, список распаковать на две переменные x,y = f.readline().split() z = f.readline() # прочитать след. строку стандартным методом s = sum(map(int ,[x,y,z])) print(s) with open(file) as f: lines = f.readlines() # прочитать сразу все строки стандартным методом - в список x,y = lines[0].split() # взять из списка первую строку, разделить по пробелам в список, список распаковать на две переменные z = lines[-1] # взять из списка последнюю строку s = sum(map(int ,[x,y,z])) print(s)
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
Garry Galler, мне кажется это лишнее
x,y = lines[0].split() # взять из списка первую строку, разделить по пробелам в список
в тесте может быть наоборот что первая строка состоит из оного числа а вторая из двух через пробел. получается код привязан только к такому виду входных данных.
или такой вариант тоже может дать ошибку?
list_data = f_input.read().split()
Чтение с файла с определённой строки
У меня есть текстовый файл и мне нужно считать всю информацию, которая расположена после 25-й строки. Как это сделать? Пожалуйста, помогите!
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 9 дек 2016 в 12:11
1,079 4 4 золотых знака 19 19 серебряных знаков 32 32 бронзовых знака
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
Если небольшой файл, можно список строк получить и отбросить первые 25:
lines = file.readlines()[25:]
Если файл большой, то чтобы не читать его весь сразу, можно воспользоваться тем что file является итератором на строками, разделёнными «\n»:
from itertools import islice lines = islice(file, 25, None)
в этом случае lines не список, а итератор возвращающий строки из файла при его обходе, начиная с 26-ой строки, где file = open(filename) .
Python. Урок 12. Ввод-вывод данных. Работа с файлами
![]()
В уроке рассмотрены основные способы ввода и вывода данных в Python с использованием консоли, и работа с файлами: открытие, закрытие, чтение и запись.
Вывод данных в консоль
Один из самых распространенных способов вывести данные в Python – это напечатать их в консоли. Если вы находитесь на этапе изучения языка, такой способ является основным для того, чтобы быстро просмотреть результат свой работы. Для вывода данных в консоль используется функция print.
Рассмотрим основные способы использования данной функции.
>>> print("Hello") Hello >>> print("Hello, " + "world!") Hello, world! >>> print("Age: " + str(23)) Age: 23
По умолчанию, для разделения элементов в функции print используется пробел.
>>> print("A", "B", "C") A B C
Для замены разделителя необходимо использовать параметр sep функции print.
print("A", "B", "C", sep="#") A#B#C
В качестве конечного элемента выводимой строки, используется символ перевода строки.
>>> for i in range(3): print("i: " + str(i)) i: 0 i: 1 i: 2
Для его замены используется параметр end.
>>> for i in range(3): print("[i: " + str(i) + "]", end=" -- ") [i: 0] -- [i: 1] -- [i: 2] --
Ввод данных с клавиатуры
Для считывания вводимых с клавиатуры данных используется функция input().
>>> input() test 'test'
Для сохранения данных в переменной используется следующий синтаксис.
>>> a = input() hello >>> print(a) hello
Если считывается с клавиатуры целое число, то строку, получаемую с помощью функции input(), можно передать сразу в функцию int().
>>> val = int(input()) 123 >>> print(val) 123 >>> type(val) class 'int'>
Для вывода строки-приглашения, используйте ее в качестве аргумента функции input().
>>> tv = int(input("input number: ")) input number: 334 >>> print(tv) 334
Преобразование строки в список осуществляется с помощью метода split(), по умолчанию, в качестве разделителя, используется пробел.
>>> l = input().split() 1 2 3 4 5 6 7 >>> print(l) ['1', '2', '3', '4', '5', '6', '7']
Разделитель можно заменить, указав его в качестве аргумента метода split().
>>> nl = input().split("-") 1-2-3-4-5-6-7 >>> print(nl) ['1', '2', '3', '4', '5', '6', '7']
Для считывания списка чисел с одновременным приведением их к типу int можно воспользоваться вот такой конструкцией.
>>> nums = map(int, input().split()) 1 2 3 4 5 6 7 >>> print(list(nums)) [1, 2, 3, 4, 5, 6, 7]
Работа с файлами
Открытие и закрытие файла
Для открытия файла используется функция open(), которая возвращает файловый объект. Наиболее часто используемый вид данной функции выглядит так open(имя_файла, режим_доступа).
Для указания режима доступа используется следующие символы:
‘r’ – открыть файл для чтения;
‘w’ – открыть файл для записи;
‘x’ – открыть файл с целью создания, если файл существует, то вызов функции open завершится с ошибкой;
‘a’ – открыть файл для записи, при этом новые данные будут добавлены в конец файла, без удаления существующих;
‘b’ – бинарный режим;
‘t’ – текстовый режим;
‘+’ – открывает файл для обновления.
По умолчанию файл открывается на чтение в текстовом режиме.
У файлового объекта есть следующие атрибуты.
file.closed – возвращает true если файл закрыт и false в противном случае;
file.mode – возвращает режим доступа к файлу, при этом файл должен быть открыт;
file.name – имя файла.
>>> f = open("test.txt", "r") >>> print("file.closed: " + str(f.closed)) file.closed: False >>> print("file.mode: " + f.mode) file.mode: r >>> print("file.name: " + f.name) file.name: test.txt
Для закрытия файла используется метод close().
Чтение данных из файла
Чтение данных из файла осуществляется с помощью методов read(размер) и readline().
Метод read(размер) считывает из файла определенное количество символов, переданное в качестве аргумента. Если использовать этот метод без аргументов, то будет считан весь файл.
>>> f = open("test.txt", "r") >>> f.read() '1 2 3 4 5\nWork with file\n' >>> f.close()
В качестве аргумента метода можно передать количество символом, которое нужно считать.
>>> f = open("test.txt", "r") >>> f.read(5) '1 2 3' >>> f.close()
Метод readline() позволяет считать строку из открытого файла.
>>> f = open("test.txt", "r") >>> f.readline() '1 2 3 4 5\n' >>> f.close()
Построчное считывание можно организовать с помощью оператора for.
>>> f = open("test.txt", "r") >>> for line in f: . print(line) . 1 2 3 4 5 Work with file >>> f.close()
Запись данных в файл
Для записи данных файл используется метод write(строка), при успешной записи он вернет количество записанных символов.
>>> f = open("test.txt", "a") >>> f.write("Test string") 11 >>> f.close()
Дополнительные методы для работы с файлами
Метод tell() возвращает текущую позицию “условного курсора” в файле. Например, если вы считали пять символов, то “курсор” будет установлен в позицию 5.
>>> f = open("test.txt", "r") >>> f.read(5) '1 2 3' >>> f.tell() 5 >>> f.close()
Метод seek(позиция) выставляет позицию в файле.
>>> f = open("test.txt", "r") >>> f.tell() 0 >>> f.seek(8) 8 >>> f.read(1) '5' >>> f.tell() 9 >>> f.close()
Хорошей практикой при работе с файлами является применение оператора with. При его использовании нет необходимости закрывать файл, при завершении работы с ним, эта операция будет выполнена автоматически.
>>> with open("test.txt", "r") as f: . for line in f: . print(line) . 1 2 3 4 5 Work with file Test string >>> f.closed True
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
>>
Раздел: Python Уроки по Python Метки: Python, Уроки Python
Python. Урок 12. Ввод-вывод данных. Работа с файлами : 2 комментария
- Моксим23.11.2020 “Преобразование строки в список осуществляется с помощью метода split(), по умолчанию, в качестве разделителя, используется пробел.”
Разделитель по умолчанию не пробел, а пустое пространство
- Алексей 01.06.2021 Ого, действительно:
>>> “1 2 3 4 5 7”.split()
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘7’]
И даже так:
>>> “1 2 \n 21 12 4”.split()
[‘1’, ‘2’, ’21’, ’12’, ‘4’]
