Eu estou usando f.writelines (str (x)) para escrever em um arquivo onde x é a lista agora dizem como escrever uma lista x em um arquivo de lidar cada lista começando em nova linha
kaushik
2
@kaushik: f.write ('\ n'.join (x)) ou f.writelines (i +' \ n 'para i in x)
Steven
Eu acho que o método f.write é melhor, pois ele pode ser usado tanto em Python 2 e 3.
você pode usar o uso, por exemplo, quando escreve um int em um arquivo, pode usar file.write (str (a) + '\ n')
未来 未来 顶尖 的 投资
@xikhari Por quê? file.write(f"my number is: {number}\n")é bom e legível.
Guimoute 27/11/19
25
Se você o usar extensivamente (muitas linhas escritas), poderá subclassificar 'arquivo':
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')
Agora ele oferece uma função adicional wl que faz o que você deseja:
fid = cfile('filename.txt','w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Talvez esteja faltando algo como caracteres diferentes de nova linha (\ n, \ r, ...) ou que a última linha também termine com uma nova linha, mas funciona para mim.
Você não precisa return None, neste caso, porque em primeiro lugar, você não precisa dele e, segundo, a cada função Python retorna Nonepor padrão quando não há nenhuma returndeclaração.
Anna
10
você poderia fazer:
file.write(your_string +'\n')
conforme sugerido por outra resposta, mas por que usar a concatenação de strings (lenta, propensa a erros) quando você pode chamar file.writeduas vezes:
file.write(your_string)
file.write("\n")
observe que as gravações são armazenadas em buffer e, portanto, equivalem à mesma coisa.
Abrir um arquivo com "a" como parâmetro em vez de "w" não altera a gravação para funcionar da maneira que você descreveu. O único efeito é que o arquivo não será substituído e o texto será adicionado à linha inferior, em vez de começar no canto superior esquerdo de um arquivo em branco.
democidist
2
Apenas uma observação, filenão é suportada Python 3e foi removida. Você pode fazer o mesmo com a openfunção interna.
Essa é a solução que eu tentei resolver esse problema para mim mesma, a fim de produzir sistematicamente \ n como separadores. Ele grava usando uma lista de strings em que cada string é uma linha do arquivo, no entanto, parece que pode funcionar para você também. (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 que não simplesmente with open(path, "w") as file: for line in strList: file.write(line + "\n")? Dessa forma, você pode remover todo o trabalho da lista, a verificação e ter apenas 3 linhas.
file.write(f"{var1}\n")
Você pode fazer isso de duas maneiras:
ou, dependendo da sua versão do Python (2 ou 3):
fonte
Você pode usar:
fonte
file.write(f"my number is: {number}\n")
é bom e legível.Se você o usar extensivamente (muitas linhas escritas), poderá subclassificar 'arquivo':
Agora ele oferece uma função adicional wl que faz o que você deseja:
Talvez esteja faltando algo como caracteres diferentes de nova linha (\ n, \ r, ...) ou que a última linha também termine com uma nova linha, mas funciona para mim.
fonte
return None
, neste caso, porque em primeiro lugar, você não precisa dele e, segundo, a cada função Python retornaNone
por padrão quando não há nenhumareturn
declaração.você poderia fazer:
conforme sugerido por outra resposta, mas por que usar a concatenação de strings (lenta, propensa a erros) quando você pode chamar
file.write
duas vezes:observe que as gravações são armazenadas em buffer e, portanto, equivalem à mesma coisa.
fonte
ou
fonte
Apenas uma observação,
file
não é suportadaPython 3
e foi removida. Você pode fazer o mesmo com aopen
função interna.fonte
A menos que grave em arquivos binários, use print. Abaixo exemplo bom para formatar arquivos csv:
Uso:
Notas:
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/ , PEP-3101*columns
na definição de função - envia qualquer número de argumentos para a lista - consulte a pergunta em * args & ** kwargsfonte
Outra solução que escreve de uma lista usando fstring
fonte
Essa é a solução que eu tentei resolver esse problema para mim mesma, a fim de produzir sistematicamente \ n como separadores. Ele grava usando uma lista de strings em que cada string é uma linha do arquivo, no entanto, parece que pode funcionar para você também. (Python 3. +)
fonte
with open(path, "w") as file: for line in strList: file.write(line + "\n")
? Dessa forma, você pode remover todo o trabalho da lista, a verificação e ter apenas 3 linhas.