Как перевести файл в строку python
Перейти к содержимому

Как перевести файл в строку python

Работа с текстовыми файлами

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

Создание, открытие и закрытие файла

Работа с любым текстовым файлом в Python начинается с вызова специальной функции open, которая принимает в качестве параметров путь к объекту на компьютере и режим обработки. Путь к документу можно указать как абсолютный (адрес расположения на жестком диске ПК), так и как относительный (координаты относительно папки проекта). Выбирая нужный режим обработки файла, следует учитывать его назначение (“w” для записи, “r” для чтения данных). Следующий пример показывает простое взаимодействие с текстовым документом.

file = open("test.txt", "w") file.write("hello world") file.close()

Как можно заметить, функция open принимает относительный путь файла и открывает его для записи. Если в папке с исходным кодом документа с аналогичным именем и расширением .txt не существует, метод open создает его самостоятельно, после чего открывает для него нужный режим обработки. Выполнив все необходимые действия с переменной file, которая ссылается на реальный файл, следует вручную закрыть его, чтобы избежать потери информации. Данную задачу выполняет метод close, если вызвать его при помощи оператора доступа (точки).

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

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

Оба примера небольших программ демонстрируют работу с test.txt, который генерируется в каталоге с исходным кодом. В качестве режима обработки для него выбирается запись данных. После этого при помощи метода write в него заносится строка “hello world”. Завершается код в обоих случаях закрытием текстового файла test.txt методом close или автоматически.

Запись построчно

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

В Python запись в файл построчно осуществляется с помощью записи нужной строки с последующей записью символа перевода строки ‘\n’. Рассмотрим пример записи списка поэлементно. Каждый элемент будет записан в новой строке:

lines = ["first", "second", "third"] with open(r"D:\test.txt", "w") as file: for line in lines: file.write(line + '\n')

Приведенный выше пример небольшой программы показывает создание небольшого массива lines, который содержит три строковых элемента: “first”, “second” и “third”. За счет функции open и связки операторов with as происходит открытие текстового файла test.txt в корневом каталоге жесткого диска D. В цикле мы проходим по всем элементам списка и с помощью команды write их записываем. Чтобы каждая запись была с новой строки, добавляем символ перевода строки.

Так же можно воспользоваться функцией writelines. Если мы передадим в качестве ее параметра список, то она запишет элементы друг за другом в одну строку. Но можно поступить следующим образом: в качестве параметра передать генератор следующим образом.

lines = ["first", "second", "third"] with open(r"D:\test.txt", "w") as file: file.writelines("%s\n" % line for line in lines)

Этот пример отличается от предыдущего тем, что вызывается метод writelines, который принимает в качестве аргумента генератор. Для разделения элементов последовательности тут применяется “\n”, благодаря чему каждое слово в документе будет находиться в отдельной строке.

Чтение построчно

Прочитать содержимое текстового файла построчно в языке Python очень просто, поскольку в этом прекрасно помогает цикл for. Но для начала все же необходимо открыть документ, как и в предыдущем случае, при помощи open и with as. Однако на этот раз следует указать другой режим обработки файла, выбрав для него “r” для получения доступа к чтению данных.

with open(r"D:\test.txt", "r") as file: for line in file: print(line)

В этом примере показывается открытие файла test.txt, в котором уже содержится небольшой массив строк, записанный ранее. Построчное чтение информации из файла производится в цикле for. Каждая итерация выводит сведения из новой строки (line) при помощи функции print. Все элементы отображаются на экране построчно, как и были ранее помещены в test.txt.

Количество строк

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

count = 0 with open(r"D:\test.txt", "r") as file: for line in file: count += 1 print(count)

Приведенный выше пример демонстрирует работу счетчика count. Для взаимодействия с ним следует открыть текстовый файл в режиме чтения, а затем инкрементировать в каждом новом шаге цикла for объявленную ранее числовую переменную, которая затем выводится в print.

Можно поступить и другим способом. Прочитать файл в список с помощью readlines. А после этого с помощью функции len определить размер списка. Это и будет количество строк.

with open(r"D:\test.txt", "r") as file: print(len(file.readlines()))

Поиск строки

Чтобы с помощью Python найти строку в текстовом файле, стоит прибегнуть к помощи встроенного метода readlines, который позволяет автоматически считывать внутреннее содержимое файла. Как и раньше, для начала необходимо открыть test.txt для чтения, чтобы затем поместить данные из него в специальный массив lines. Встроенный метод index позволяет найти номер элемента в последовательности, просто передав ему нужный объект, например, строку “second”.

with open(r"D:\test.txt", "r") as file: lines = file.readlines() print(lines.index("second\n"))

Поскольку в test.txt все элементы располагаются в отдельных строках, к строке, которую стоит передать методу index в качестве аргумента, необходимо прибавить конструкцию “\n”.

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

Чтобы в Python удалить ненужную строку из файла, следует воспользоваться сразу двумя режимами обработки файлов: чтение и запись. Для начала необходимо открыть test.txt для чтения, чтобы поместить информацию из него в отдельный массив lines. Далее потребуется удалить один из элементов последовательности при помощи оператора del, указав ему индекс нужной строки в квадратных скобках. Массив объектов, который получился в итоге, необходимо поместить в исходный текстовый файл, однако на этот раз открыть его надо в режиме записи.

with open(r"D:\test.txt", "r") as file: lines = file.readlines() del lines[1] with open(r"D:\test.txt", "w") as file: file.writelines(lines)

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

Обратите внимание, что в приведенном примере удалится вторая строка, так как индексы списка считаются от нулевого элемента.

Таким образом, можно достаточно легко взаимодействовать с содержимым текстовых файлов, пользуясь языком программирования Python 3. Его встроенные функции позволяют записывать данные в документ и считывать их в удобном для пользователя виде. При помощи средств по расширенной работе с файлами, можно управлять ими на куда более продвинутом уровне.

Как прочитать файл построчно в 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. Это применимо и к предыдущим двум примерам.

    Python: как преобразовать строки при импорте из файла?

    Формат именно такой, увеличить кол-во строчек по одному значению в каждой нельзя. Я делаю импорт из этого файла в список:

    def initPoints(): points = [] f = open('scores.txt') points = f.read().splitlines() f.close() print(points) initPoints() 
    ['0 1', '1 0'] 

    Мне же нужно, чтобы результат принял такой вид:

    ['0', '1', '1', '0'] 

    Пока не могу понять, как сделать. Помогите разобраться, пожалуйста.
    Отслеживать
    9,366 4 4 золотых знака 40 40 серебряных знаков 56 56 бронзовых знаков
    задан 28 апр 2014 в 17:19
    121 2 2 серебряных знака 9 9 бронзовых знаков
    @pikey ого какой хост для картинок. Привет от латышского подполья.
    28 апр 2014 в 18:19
    Говорят, йован похитил разум биологов, юзернейм 😉
    28 апр 2014 в 18:44

    2 ответа 2

    Сортировка: Сброс на вариант по умолчанию

    points = f.read().split() 

    Отслеживать
    ответ дан 28 апр 2014 в 17:44
    171 5 5 бронзовых знаков

    Интерпретатор видит какие-то символы форматирования в начале первой строки. Вот что на выходе получается: ['п»ї0', '1', '1', '0'] Хотя в исходном scores.txt нет ничего, что намекало бы на формат. Что это может быть?

    28 апр 2014 в 18:10
    f.read().strip().split()
    28 апр 2014 в 18:17
    @pikey utf-BOM, например. Думаю, что нужно дулать codecs.open(file, 'r', 'utf-8-sig')
    28 апр 2014 в 18:18

    А если исходный файл не в utf-8? Я ведь верно понял - 'utf-8-sig' говорит интерпретатору читать файл как utf-8?

    28 апр 2014 в 18:29

    @pikey, да, но цифры, насколько понимаю, кодируются одинаково вне зависимости от кодировки. Тут проблема может быть только если питон не найдет эти первые три байта. Но если файл создается и обрабатывается исключительно программой, то там внезапностей быть не должно.

    28 апр 2014 в 18:35

    Я тут, с вашей помощью, допилил то, что нужно было допилить. В принципе, всё работает, как тебуется. Единственное, что хотелось бы прояснить для себя - как добиться того же результата, но с более компактным кодом?

    Например, вот одна функция:

    def newScores(): global result global scores result = int(input("Enter 1, if the computer won, or enter '0' otherwise: ")) if (result==1): print ("PC's won this round, total score list has been adjusted:") scores[0] = (scores[0]+1) scores[3] = (scores[3]+1) else: print ("You've won this round, total score list has been adjusted:") scores[1] = (scores[1]+1) scores[2] = (scores[2]+1) print (scores) newScores() 
    • как написать операции по изменению значений строк в списке поболеелучшей?
    def updateScores(): global scores scores = [str(x) for x in scores] print ("") # the next 2 lines is there for testing, should be removed later on print ("The 'scorelist' has been converted to strings:") print (scores) scores[0] = (scores[0]+" "+scores[1]+"\n") scores[1] = (scores[2]+" "+scores[3]) scores.remove(scores[2]) scores.remove(scores[2]) print (scores) f = open("scoretest.txt", "w+") line = f.writelines(scores) f.close() updateScores() 

    Как все эти операции со строками написать в более сжатом виде?

    Чтение текстового файла в строковую переменную и удаление символов новой строки

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

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

    Hello, World! 

    Необходимо прочитать его содержимое и преобразовать в строку следующим образом: 'Hello,World!' .

    Решение

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

    Сначала откроем файл на чтение с помощью функции open() . Затем воспользуемся методом read() , который считывает все содержимое файла в одну строку. После этого применим метод replace() , который заменяет все символы новой строки ( '\n' ) на пустую строку ( '' ), то есть по сути удаляет их.

    Вот пример кода, который решает описанную выше задачу:

    with open('myfile.txt', 'r') as file: data = file.read().replace('\n', '')

    В переменной data теперь будет строка 'Hello,World!' .

    Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *