Python считать массив строк

Python считать массив строк

Чтобы открыть текстовый файл на запись, необходимо применить режим w (перезапись) или a (дозапись). Затем для записи применяется метод write(str) , в который передается записываемая строка. Стоит отметить, что записывается именно строка, поэтому, если нужно записать числа, данные других типов, то их предварительно нужно конвертировать в строку.

Запишем некоторую информацию в файл «hello.txt»:

with open("hello.txt", "w") as file: file.write("hello world")

Если мы откроем папку, в которой находится текущий скрипт Python, то увидем там файл hello.txt. Этот файл можно открыть в любом текстовом редакторе и при желании изменить.

Теперь дозапишем в этот файл еще одну строку:

with open("hello.txt", "a") as file: file.write("\ngood bye, world")

Дозапись выглядит как добавление строку к последнему символу в файле, поэтому, если необходимо сделать запись с новой строки, то можно использовать эскейп-последовательность «\n». В итоге файл hello.txt будет иметь следующее содержимое:

hello world good bye, world

Еще один способ записи в файл представляет стандартный метод print() , который применяется для вывода данных на консоль:

with open("hello.txt", "a") as hello_file: print("Hello, world", file=hello_file)

Для вывода данных в файл в метод print в качестве второго параметра передается название файла через параметр file. А первый параметр представляет записываемую в файл строку.

Чтение файла

Для чтения файла он открывается с режимом r (Read), и затем мы можем считать его содержимое различными методами:

  • readline() : считывает одну строку из файла
  • read() : считывает все содержимое файла в одну строку
  • readlines() : считывает все строки файла в список
Читайте также:  Css overflow y overlay

Например, считаем выше записанный файл построчно:

with open("hello.txt", "r") as file: for line in file: print(line, end="")

Несмотря на то, что мы явно не применяем метод readline() для чтения каждой строки, но в при переборе файла этот метод автоматически вызывается для получения каждой новой строки. Поэтому в цикле вручную нет смысла вызывать метод readline. И поскольку строки разделяются символом перевода строки «\n», то чтобы исключить излишнего переноса на другую строку в функцию print передается значение end=»» .

Теперь явным образом вызовем метод readline() для чтения отдельных строк:

with open("hello.txt", "r") as file: str1 = file.readline() print(str1, end="") str2 = file.readline() print(str2)
hello world good bye, world

Метод readline можно использовать для построчного считывания файла в цикле while:

with open("hello.txt", "r") as file: line = file.readline() while line: print(line, end="") line = file.readline()

Если файл небольшой, то его можно разом считать с помощью метода read() :

with open("hello.txt", "r") as file: content = file.read() print(content)

И также применим метод readlines() для считывания всего файла в список строк:

with open("hello.txt", "r") as file: contents = file.readlines() str1 = contents[0] str2 = contents[1] print(str1, end="") print(str2)

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

filename = "hello.txt" with open(filename, encoding="utf8") as file: text = file.read()

Теперь напишем небольшой скрипт, в котором будет записывать введенный пользователем массив строк и считывать его обратно из файла на консоль:

# имя файла FILENAME = "messages.txt" # определяем пустой список messages = list() for i in range(4): message = input("Введите строку " + str(i+1) + ": ") messages.append(message + "\n") # запись списка в файл with open(FILENAME, "a") as file: for message in messages: file.write(message) # считываем сообщения из файла print("Считанные сообщения") with open(FILENAME, "r") as file: for message in file: print(message, end="")
Введите строку 1: hello Введите строку 2: world peace Введите строку 3: great job Введите строку 4: Python Считанные сообщения hello world peace great job Python

Источник

Питон: работа с файлами

На серьезных олимпиадах, а также во многих других ситуациях вам надо читать данные не с клавиатуры, а из файла, и выводить данные в файл, а не на «экран». В таком случае вы должны знать имена этих файлов; в задачах они, как правило, указаны, на этом сайте имена файлов почти всегда — input.txt для входных данных и output.txt для выходных.

Во многих языках программирования ввод/вывод данных через файлы очень похож на ввод/вывод с клавиатуры — те же команды, только немного другие параметры. В питоне, к сожалению, это не так.

Ввод данных

Самый простой способ ввести данные из файла в питоне — это сразу считать их в массив строк. Это делается так:

data = open("input.txt", "r").readlines()

Здесь input.txt — файл, откуда надо считать данные, параметр «r» указывает, что вы собираетесь именно читать (read) данные, а не записывать (write, см. ниже). Команда open , как говорят, «открывает файл на чтение», а команда readlines считывает весь файл в массив строк.

Теперь data — это массив строк, каждый элемент которого — это очередная строка из входного файла. Например, если в файле было написано

то data будет содержать массив [«1 2 3\n», «4 5 6\n», «some text\n»] . (Здесь «\n» — это символ перевода строки, он будет на конце каждой строки массива data , кроме, возможно, последней. Если вы считываете числа, то можете о нем не беспокоиться, а если считываете строки и он вам мешает, то, как правило, от него можно избавиться командой a = a.rstrip(«\n») , где a — строка, у которого вы хотите его убрать.)

Каждый элемент массива data — это как результат отдельной команды input() , которой вы пользовались для чтения с клавиатуры. Поэтому дальше вы пишете программу так же, как писали и раньше, но вместо каждого очередного обращения к input() вы обращаетесь к очередному элементу массива data . В простых случаях все просто, в более сложных вам надо аккуратно подсчитывать, к какому именно элементу массива вам надо обратиться.

Пример. Пусть во входном файле два числа по одному на строке. Их считываем так (здесь и далее слева — пример чтения с клавиатуры, справа — из файла):

data = open("input.txt", "r").readlines() a = int(data[0]) b = int(data[1])

Если же два числа в одной строке:

data = open("input.txt", "r").readlines() a, b = map(int, data[0].split())

Более сложный пример: сначала число N , а потом N строк по одному числу в каждой:

n = int(input()) for i in range(n): x = int(input()) #. что-то делаем с x
data = open("input.txt", "r").readlines() n = int(data[0]) for i in range(n): x = int(data[i + 1]) #. что-то делаем с x

Обратите внимание на то, что здесь написано i + 1 — потому что в первой (нулевой) строке было n .

Вывод

Проще всего выводить данные — записав их в одну большую строку и выведя эту строку. Вывод строки в файл делается так:

здесь s — строка, которую нужно вывести. Это должна быть именно строка, а не число и т.д. Используйте функцию str , чтобы превратить что угодно в строку, вручную добавляйте пробелы и переводы строк (перевод строки записывается так: «\n» ).

Пример: пусть надо вывести два числа в одну строку:

open(«output.txt», «w»).write(str(a) + » » + str(b))

Пусть надо вывести два числа на отдельных строках:

open(«output.txt», «w»).write(str(a) + «\n» + str(b))

Пусть надо вывести массив чисел по одному числу на строке:

s = "" for x in a: s = s + str(x) + "\n" open("output.txt", "w").write(s)

или проще, используя строковую магию:

open("output.txt", "w").write("\n".join(a))

Имейте в виду, что такой вызов должен быть только один раз. Если вы хотите вызывать функцию write несколько раз, то надо суметь вызвать функцию open только один раз. Рекомендуемый вариант — такой:

with open("output.txt", "w") as f: f.write("1") f.write("2")

Источник

Как прочитать файл построчно в Python

Существует много способов чтение из файла построчно в Python. Вы можете считать строки в список или обращаться к каждой из строк в цикле при помощи итератора или вызова функции объекта file.

В этом руководстве мы научимся считывать файл построчно, используя функции readline() , readlines() и объект файла на примерах различных программ.

Пример 1: Чтение файла построчно функцией readline()

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

Как использовать функцию file.readline()

Следуйте пунктам приведенным ниже для того, чтобы считать файл построчно, используя функцию readline() .

  1. Открываем файл в режиме чтения. При этом возвращается дескриптор файла.
  2. Создаём бесконечный цикл while.
    1. В каждой итерации считываем строку файла при помощи readline() .
    2. Если строка не пустая, то выводим её и переходим к следующей. Вы можете проверить это, используя конструкцию if not . В противном случае файл больше не имеет строк и мы останавливаем цикл с помощью break .
     
     
    # получим объект файла file1 = open("sample.txt", "r") while True: # считываем строку line = file1.readline() # прерываем цикл, если строка пустая if not line: break # выводим строку print(line.strip()) # закрываем файл file1.close
    Привет! Добро пожаловать на PythonRu. Удачи в обучении!

    Пример 2: Чтение строк как список функцией readlines()

    Функция readlines() возвращает все строки файла в виде списка. Мы можем пройтись по списку и получить доступ к каждой строке.

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

     
    # получим объект файла file1 = open("sample.txt", "r") # считываем все строки lines = file1.readlines() # итерация по строкам for line in lines: print(line.strip()) # закрываем файл file1.close
    Привет! Добро пожаловать на PythonRu. Удачи в обучении!

    Пример 3: Считываем файл построчно из объекта File

    В нашем первом примере, мы считываем каждую строку файла при помощи бесконечного цикла while и функции readline() . Но Вы можете использовать цикл for для файлового объекта, чтобы в каждой итерации цикла получать строку, пока не будет достигнут конец файла.

    Ниже приводится программа, демонстрирующая применение оператора for-in, для того, чтобы перебрать строки файла.

    Для демонстрации откроем файл с помощью with open. Это применимо и к предыдущим двум примерам.

    Источник

Оцените статью