Escribir cadena a un archivo en una nueva línea cada vez

Quiero añadir una nueva línea a mi cadena cada vez que llamo file.write() . ¿Cuál es la forma más fácil de hacer esto en Python?

Utilice “\ n”:

 file.write("My String\n") 

Consulte el manual de Python para referencia.

Puede hacer esto de dos maneras:

 f.write("text to write\n") 

o, dependiendo de su versión de Python (2 o 3):

 print >>f, "text to write" # Python 2.x print("text to write", file=f) # Python 3.x 

Puedes usar:

 file.write(your_string + '\n') 

Si lo usa extensivamente (muchas líneas escritas), puede subclase ‘archivo’:

 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') return None 

Ahora ofrece una función adicional wl que hace lo que quieres:

 fid = cfile('filename.txt', 'w') fid.wl('appends newline charachter') fid.wl('is written on a new line') fid.close() 

Tal vez me falte algo así como diferentes caracteres de nueva línea (\ n, \ r, …) o que la última línea también termine con una nueva línea, pero funciona para mí.

 file_path = "/path/to/yourfile.txt" with open(file_path, 'a') as file: file.write("This will be added to the next line\n") 

o

 log_file = open('log.txt', 'a') log_file.write("This will be added to the next line\n") 

Esta es la solución que se me ocurrió tratando de resolver este problema por mí mismo para producir sistemáticamente \ n’s como separadores. Escribe usando una lista de cadenas donde cada cadena es una línea del archivo, sin embargo, parece que puede funcionar para usted tambié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 "" 

Podrías hacerlo:

 file.write(your_string + '\n') 

como lo sugiere otra respuesta, pero ¿por qué usar la concatenación de cadenas (lenta, propensa a errores) cuando puede llamar a file.write dos veces?

 file.write(your_string) file.write("\n") 

Tenga en cuenta que las escrituras están en búfer por lo que equivale a la misma cosa.

Solo una nota, el file no es compatible con Python 3 y se eliminó. Puedes hacer lo mismo con la función incorporada open .

 f = open('test.txt', 'w') f.write('test\n') 

Mi enfoque para mantener fácilmente el formato deseado como archivos csv:

 def write_row(file_, *columns): template = '{}\t' * (len(columns) - 1) + '\n' file_.write(template.format(*columns)) 

Uso:

 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]) 

Notas:

  • '{}, {}'.format(1, 'the_second')https://pyformat.info/ , PEP-3101
  • también puede usar f-strings f'{4}+{5}={4+5}' – PEP-498
  • ‘a’ * 5 -> ‘aaaaa’
  • ‘a’ * -1 -> ”
  • ‘\ t’ – carácter de tabulación
  • *columns en la definición de la función – envía cualquier número de argumentos a la lista – vea la pregunta en * args y ** kwargs