Подтвердить что ты не робот

Как добавить новые данные на новую строку

Мой код выглядит следующим образом:

def storescores():

   hs = open("hst.txt","a")
   hs.write(name)
   hs.close() 

поэтому, если я запустил его и введите "Райан", затем запустите его снова и введите "Боб", файл hst.txt выглядит как

RyanBob 

вместо

Ryan
Bob

Как это исправить?

4b9b3361

Ответ 1

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

hs.write(name + "\n")

В этом случае используется обратный слэш, \n, который Python преобразует в символ новой строки в строковых литералах. Он просто конкатенирует вашу строку, name и этот символ новой строки в большую строку, которая записывается в файл.

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

"""
"""

Или вы можете использовать форматирование строк вместо конкатенации:

hs.write("{}\n".format(name))

Все это объясняется в главе Input and Output в учебнике.

Ответ 2

Все ответы, похоже, работают нормально. Если вам нужно делать это много раз, имейте в виду, что запись

hs.write(name + "\n")

создает новую строку в памяти и добавляет ее в файл.

Более эффективным будет

hs.write(name)
hs.write("\n")

который не создает новую строку, просто присоединяется к файлу.

Ответ 3

У меня была такая же проблема. И я смог решить это, используя форматтер.

file_name = "abc.txt"
new_string = "I am a new string."
opened_file = open(file_name, 'a')
opened_file.write("%r\n" %new_string)
opened_file.close()

Надеюсь, это поможет.

Ответ 4

Существует также один факт, который вы должны учитывать. Вы должны сначала проверить, пустой ли файл, прежде чем добавлять что-либо к нему. Потому что, если ваш файл пуст, я не думаю, что вы хотели бы добавить пустую новую строку в начале файла. Этот код

  • сначала проверяет, пуст ли файл
  • Если файл пуст, он просто добавит ваш текст ввода в файл, иначе он добавит новую строку, а затем добавит ваш текст в файл. Вы должны использовать try catch для os.path.getsize(), чтобы поймать любые исключения.

Код:

import os

def storescores():
hs = open("hst.txt","a")
if(os.path.getsize("hst.txt") > 0):
   hs.write("\n"+name)
else:
   hs.write(name)

hs.close()

Ответ 5

В Python> = 3.6 вы можете использовать новую функцию строкового литерала:

with open('hst.txt', 'a') as fd:
    fd.write(f'\n{name}')

Пожалуйста, обратите внимание, что использование " со статусом " автоматически закрывает файл, когда он заканчивается

Ответ 6

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

Например,

with open('hst.txt') as fobj:
    text = fobj.read()

name = 'Bob'

with open('hst.txt', 'a') as fobj:
    if not text.endswith('\n'):
        fobj.write('\n')
    fobj.write(name)

Возможно, вы захотите добавить новую строку после имени, или вы не можете, но в любом случае, это не ответ на ваш вопрос.

Ответ 7

Я предполагаю, что все, что вам нужно, это простая конкатенация строк:

def storescores():

   hs = open("hst.txt","a")
   hs.write(name + " ")
   hs.close() 

В качестве альтернативы измените значение "на" \n" для новой строки.

Ответ 8

import subprocess
subprocess.check_output('echo "' + YOURTEXT + '" >> hello.txt',shell=True)

Ответ 9

Вам нужно изменить параметр "a" => "a+". Следуйте этому коду ниже:

def storescores():
hs = open("hst.txt","a+")