Estoy utilizando f.writelines (str (x)) para escribir en un archivo donde x es la lista que ahora dicen cómo escribir una lista x en un archivo de afrontamiento cada lista a partir de la nueva línea
kaushik
2
@kaushik: f.write ('\ n'.join (x)) o f.writelines (i +' \ n 'para i en x)
Steven
Creo que el método f.write es mejor ya que puede usarse tanto en Python 2 como en 3.
puede usar el uso, por ejemplo, cuando escribe un int en un archivo, puede usar file.write (str (a) + '\ n')
未来 陆家嘴 顶尖 的 投资 人
@xikhari ¿Por qué? file.write(f"my number is: {number}\n")está bien y legible.
Guimoute
25
Si lo usa extensamente (muchas líneas escritas), puede subclasificar 'archivo':
class cfile(file):#subclass file to have a more convienient use of writelinedef __init__(self, name, mode ='r'):
self = file.__init__(self, name, mode)def wl(self, string):
self.writelines(string +'\n')
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 falta algo como diferentes caracteres de nueva línea (\ n, \ r, ...) o que la última línea también termina con una nueva línea, pero funciona para mí.
No es necesario return Noneen este caso porque primero, no lo necesita y segundo, cada función de Python regresa Nonepor defecto cuando no hay una returndeclaración.
Anna
10
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 file.writedos veces:
file.write(your_string)
file.write("\n")
tenga en cuenta que las escrituras se almacenan en búfer, por lo que equivale a lo mismo.
Abrir un archivo con "a" como parámetro en lugar de "w" no cambia la función de escritura para que funcione de la manera que usted describió. El único efecto que tiene es que el archivo no se sobrescribirá y el texto se agregará a la línea inferior en lugar de comenzar en la parte superior izquierda de un archivo en blanco.
Democidista
2
Solo una nota, fileno es compatible Python 3y se eliminó. Puede hacer lo mismo con la openfunción incorporada.
Esta es la solución que se me ocurrió al tratar 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 también puede funcionar para usted. (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""
¿Por qué no simplemente with open(path, "w") as file: for line in strList: file.write(line + "\n")? De esta manera, puede eliminar todo el trabajo de la lista, la verificación y tener solo 3 líneas.
file.write(f"{var1}\n")
Puede hacer esto de dos maneras:
o, dependiendo de su versión de Python (2 o 3):
fuente
Puedes usar:
fuente
file.write(f"my number is: {number}\n")
está bien y legible.Si lo usa extensamente (muchas líneas escritas), puede subclasificar 'archivo':
Ahora ofrece una función adicional wl que hace lo que quieres:
Tal vez me falta algo como diferentes caracteres de nueva línea (\ n, \ r, ...) o que la última línea también termina con una nueva línea, pero funciona para mí.
fuente
return None
en este caso porque primero, no lo necesita y segundo, cada función de Python regresaNone
por defecto cuando no hay unareturn
declaración.Podrías hacerlo:
como lo sugiere otra respuesta, pero ¿por qué usar la concatenación de cadenas (lenta, propensa a errores) cuando puede llamar
file.write
dos veces:tenga en cuenta que las escrituras se almacenan en búfer, por lo que equivale a lo mismo.
fuente
o
fuente
Solo una nota,
file
no es compatiblePython 3
y se eliminó. Puede hacer lo mismo con laopen
función incorporada.fuente
A menos que escriba en archivos binarios, use print. El siguiente ejemplo es bueno para formatear archivos csv:
Uso:
Notas:
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/ , PEP-3101*columns
en la definición de la función - despacha cualquier número de argumentos para enumerar - vea la pregunta en * args & ** kwargsfuente
Otra solución que escribe desde una lista usando fstring
fuente
Esta es la solución que se me ocurrió al tratar 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 también puede funcionar para usted. (Python 3. +)
fuente
with open(path, "w") as file: for line in strList: file.write(line + "\n")
? De esta manera, puede eliminar todo el trabajo de la lista, la verificación y tener solo 3 líneas.