Я хочу добавить новую строку в свою строку каждый раз, когда я вызываю file.write()
. Какой самый простой способ сделать это в Python?
Запись строки в файл по новой строке каждый раз
Ответ 1
Используйте "\n":
file.write("My String\n")
См. руководство Python для справки.
Ответ 2
Вы можете сделать это двумя способами:
f.write("text to write\n")
или, в зависимости от вашей версии Python (2 или 3):
print >>f, "text to write" # Python 2.x
print("text to write", file=f) # Python 3.x
Ответ 3
Ты можешь использовать:
file.write(your_string + '\n')
Ответ 4
Если вы используете его широко (много письменных строк), вы можете создать подкласс 'file':
class cfile(file):
#subclass file to have a more convienient use of writeline
def __init__(self, name, mode = 'r'):
self = file.__init__(self, name, mode)
def wl(self, string):
self.writelines(string + '\n')
Теперь он предлагает дополнительную функцию wl, которая делает то, что вы хотите:
fid = cfile('filename.txt', 'w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Возможно, мне не хватает чего-то вроде символов новой строки (\n,\r,...) или что последняя строка также заканчивается новой строкой, но это работает для меня.
Ответ 5
file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
file.write("This will be added to the next line\n")
или же
log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")
Ответ 6
Вы могли бы сделать:
file.write(your_string + '\n')
как предполагает другой ответ, но зачем использовать конкатенацию строк (медленную, подверженную ошибкам), когда вы можете вызвать file.write
дважды:
file.write(your_string)
file.write("\n")
обратите внимание, что записи буферизуются, так что это одно и то же.
Ответ 7
Примечание: file
не поддерживается в Python 3
и был удален. Вы можете сделать то же самое с open
встроенной функцией.
f = open('test.txt', 'w')
f.write('test\n')
Ответ 8
Это решение, которое я придумал, пытаясь решить эту проблему для себя, чтобы систематически создавать \n в качестве разделителей. Он пишет, используя список строк, где каждая строка является одной строкой файла, однако кажется, что это может работать и для вас. (Python 3. +)
#Takes a list of strings and prints it to a file.
def writeFile(file, strList):
line = 0
lines = []
while line < len(strList):
lines.append(cheekyNew(line) + strList[line])
line += 1
file = open(file, "w")
file.writelines(lines)
file.close()
#Returns "\n" if the int entered isn't zero, otherwise "".
def cheekyNew(line):
if line != 0:
return "\n"
return ""
Ответ 9
Если вы не пишете в двоичные файлы, используйте print. Ниже приведен пример, подходящий для форматирования CSV файлов:
def write_row(file_, *columns):
print(*columns, sep='\t', end='\n', file=file_)
Использование:
PHI = 45
with open('file.csv', 'a+') as f:
write_row(f, 'header', 'phi:', PHI, 'serie no. 2')
write_row(f) # newline
write_row(f, data[0], data[1])
Примечание:
- распечатать документацию
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/, PEP-3101- '\ t' - символ табуляции
*columns
в определении функции - отправляет любое количество аргументов в список - см. вопрос по * args & ** kwargs