Обратные строки файлов в python

#python #python-3.x #file

#python #python-3.x #файл

Вопрос:

Я хочу обратить сохраненные строки файла назад и добавить к каждой строке строку, а затем сохранить ее в новый текстовый файл. Ввод :

 A
Z
E
R
 

Вывод:

 Exemple/R
Exemple/E
Exemple/Z
Exemple/A
 

Комментарии:

1. Добро пожаловать в StackOverflow! Что вы думаете о том, как это решить? Пожалуйста, покажите ваш текущий код, чтобы помочь вам с вашим вопросом.

Ответ №1:

Редактировать:

После просмотра вопроса редактирования в новом формате, например

 A
Z
E
R
 

Тогда вы можете

  • Перевернул строку с помощью [::-1] .
  • Разделить на новую строку с помощью split("n") .
  • А затем выполните цикл и выведите нужное значение таким образом:
 txt = '''A
Z
E
R'''
txt = txt[::-1]
split = txt.split("n")
for x in split:
    print("Exemple/" x)
 

Кроме того, если вы хотите читать и записывать в файл, вы можете:

  • Откройте новый файл
  • Используется readlines() для получения текста в виде строки по строкам
  • Сделайте то же самое, что и раньше, чтобы получить обратный текст
  • Запись в новый файл
 with open("your_file_to_read") as f:
    txt = f.readlines()
    txt = txt[::-1]
    with open("your_file_to_write", "w") as outf:
        for x in txt:
            outf.write("Exemple/" x)
 

Комментарии:

1. Итак, OP предполагал, что входные данные должны быть в отдельных строках, а не разделены пробелом (они просто не понимали, как сделать так, чтобы предварительно отформатированный текст с разрывами строк правильно отображался в Markdown). Я исправил форматирование вопроса; возможно, вы захотите немного скорректировать свой ответ, чтобы он соответствовал.

2. Обновленный ответ, спасибо. Я не заметил о формате.

3. Спасибо @ J.F. это работает как шарм, я добавил только » n» для последней строки

4. Добро пожаловать. Также, если проблема была решена, отметьте ответ как принятый, приветствуется.

Ответ №2:

Условия

Из того, какую информацию вы предоставляете, я предполагаю, что вы имеете в виду следующее:

  1. Считайте из текстового файла и извлекайте из файла строку, подобную «A».
  2. Измените порядок строк в обратном порядке
  3. Объедините несвязанную строку с каждым символом файловой строки. (например, «R» —> «Example/R»)
  4. Создайте новый текстовый файл.
  5. Выведите новую строку в новый текстовый файл.
  6. При необходимости повторите для новых строк файла.

Программа

С учетом этих условий я создал функцию с именем line_inverter(), которая принимает следующие аргументы:

  • import_file_name (имя файла, из которого вы хотели бы получить данные)
  • имя_файла_экспорта (новый файл, который вы хотите создать и экспортировать данные)
  • prefix_string (строка, которую вы хотите добавить перед каждым символом в строке)

Вот исходный код в Python 3. (Если вы хотите вместо этого увидеть его в репозитории на GitHub, нажмите здесь)

 # inverts file line(s) and writes to a new file
def line_inverter(import_file_name, export_file_name, prefix_string):
    
    # tries to open import file in reading mode
    f1 = open(import_file_name, "r")
    
    # tries to create export file in append mode
    f2 = open(export_file_name, "a")
    
    
    # creates a list with each line in a separate index
    line_list = f1.readlines()
    
    # reverses line order
    line_list.reverse()
    
    # closes import file, since all data is stored in line_list
    f1.close()
    
    
    # loops through line_list to modify individual indices
    for line in line_list:
        
        # strips the "n" from the string
        line = line.strip("n")
        
        # concatenates prefix_string and a character from the line_list
        x = prefix_string   line
        
        # appends the line to the new file
        f2.write(x)
        
    # once the loop is finished, close the new file
    f2.close()
 

Я все еще новичок в этом, так что это определенно не идеально. Это работает на основе того, что я тестировал. Тем не менее, если он каким-либо образом блокируется, дайте мне знать, я бы не хотел давать ошибочную программу: 3

Комментарии:

1. try Блок делает это так, что, если вводится неправильный тип параметра import_file_name , он продолжит выполнение функции (после печати некоторого текста) — вы, вероятно, этого не хотите. В любом случае, я не уверен, зачем вам вообще перехватывать TypeError, поскольку это исключение достаточно описательно. Также подумайте о том, чтобы научиться использовать with блок: это сделало бы обработку файлов этого кода более питонической. Наконец, я бы не стал использовать букву i для неиндексного в for цикле — это выглядит немного запутанно.

2. Спасибо, что рассказали мне! Я удалил инструкции и оставил все как есть. О, и я обязательно этому научусь, что-нибудь улучшу! Я также заменю i на что-то другое, извинения!

3. Я получаю синтаксическую ошибку в def line_inverter(). я пробовал def line_inverter(«import_file.txt «, «import_file.txt «,»www./» и def line_inverter(f1, f2,x) должен ли я импортировать любую библию для обработки функции def?

4. Если вы хотите вызвать функцию, вам нужно написать новую строку в файле python с приведенным выше кодом и ввести следующее: line_inverter("import_file.txt", "export_file.txt", "www./") , Я сделал это, чтобы взять из одного файла, экспортировать в другой с измененными строками. И не включайте «def» спереди, это означает, что вы определяете (или переопределяете) функцию.