możesz użyć tego użycia, na przykład, kiedy piszesz int do pliku, możesz użyć file.write (str (a) + '\ n')
未来 陆家嘴 顶尖 的 投资 人
@xikhari Dlaczego? file.write(f"my number is: {number}\n")jest w porządku i czytelny.
Guimoute
24
Jeśli używasz go intensywnie (dużo zapisanych linii), możesz podklasować „plik”:
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')
Teraz oferuje dodatkową funkcję wl, która robi to, co chcesz:
fid = cfile('filename.txt','w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Może brakuje mi czegoś takiego jak różne znaki nowej linii (\ n, \ r, ...) lub że ostatni wiersz jest również zakończony nową linią, ale to działa dla mnie.
W return Nonetym przypadku nie jest to konieczne, ponieważ po pierwsze nie jest to potrzebne, a po drugie, każda funkcja Pythona Nonejest domyślnie zwracana , gdy nie ma returninstrukcji.
Anna
10
mógłbyś:
file.write(your_string +'\n')
jak sugeruje inna odpowiedź, ale po co używać konkatenacji ciągów (powolna, podatna na błędy), gdy można wywoływać file.writedwa razy:
file.write(your_string)
file.write("\n")
Zauważ, że zapisy są buforowane, więc sprowadza się to do tego samego.
Otwarcie pliku z parametrem „a” zamiast „w” nie zmienia zapisu do funkcji, aby działał w sposób opisany przez Ciebie. Jedyny efekt, jaki ma, to to, że plik nie zostanie nadpisany, a tekst zostanie dodany do dolnej linii zamiast zaczynać w lewym górnym rogu pustego pliku.
demokrata z
2
Notatka, filenie jest obsługiwana Python 3i została usunięta. Możesz zrobić to samo z openwbudowaną funkcją.
Oto rozwiązanie, które wymyśliłem, próbując rozwiązać ten problem dla siebie, aby systematycznie produkować \ n jako separatory. Pisze przy użyciu listy ciągów, gdzie każdy ciąg jest jedną linią pliku, jednak wydaje się, że może on również działać dla ciebie. (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""
Dlaczego nie po prostu with open(path, "w") as file: for line in strList: file.write(line + "\n")? W ten sposób możesz usunąć całą pracę z listą, sprawdzić i mieć tylko 3 linie.
file.write(f"{var1}\n")
Możesz to zrobić na dwa sposoby:
lub, w zależności od wersji Python (2 lub 3):
źródło
Możesz użyć:
źródło
file.write(f"my number is: {number}\n")
jest w porządku i czytelny.Jeśli używasz go intensywnie (dużo zapisanych linii), możesz podklasować „plik”:
Teraz oferuje dodatkową funkcję wl, która robi to, co chcesz:
Może brakuje mi czegoś takiego jak różne znaki nowej linii (\ n, \ r, ...) lub że ostatni wiersz jest również zakończony nową linią, ale to działa dla mnie.
źródło
return None
tym przypadku nie jest to konieczne, ponieważ po pierwsze nie jest to potrzebne, a po drugie, każda funkcja PythonaNone
jest domyślnie zwracana , gdy nie mareturn
instrukcji.mógłbyś:
jak sugeruje inna odpowiedź, ale po co używać konkatenacji ciągów (powolna, podatna na błędy), gdy można wywoływać
file.write
dwa razy:Zauważ, że zapisy są buforowane, więc sprowadza się to do tego samego.
źródło
lub
źródło
Notatka,
file
nie jest obsługiwanaPython 3
i została usunięta. Możesz zrobić to samo zopen
wbudowaną funkcją.źródło
O ile nie zapisujesz w plikach binarnych, użyj print. Poniżej przykład dobry do formatowania plików csv:
Stosowanie:
Uwagi:
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/ , PEP-3101*columns
w definicji funkcji - wywołuje dowolną liczbę argumentów do wyświetlenia - patrz pytanie o * args i ** kwargsźródło
Kolejne rozwiązanie, które pisze z listy przy użyciu fstring
źródło
Oto rozwiązanie, które wymyśliłem, próbując rozwiązać ten problem dla siebie, aby systematycznie produkować \ n jako separatory. Pisze przy użyciu listy ciągów, gdzie każdy ciąg jest jedną linią pliku, jednak wydaje się, że może on również działać dla ciebie. (Python 3. +)
źródło
with open(path, "w") as file: for line in strList: file.write(line + "\n")
? W ten sposób możesz usunąć całą pracę z listą, sprawdzić i mieć tylko 3 linie.