Použij csv, zapisuje se do něj fakt rychle, dívej
hodnoty = [1,2,3,4]
f = file("soubor.csv", "w")
delka = len(hodnoty)
for x in range(delka):
f.write(hodnoty[x] + "\n")
A je to
Bože to je prasárna...
Co je na tom za prasárnu? Ve skole sem za to dostal jednicku a ten ucitel ma vysokou skolu, tak by mi ji asi nedal ne?
Možná jsem jen nepoznal trolla, ale jestli se za toto dneska dávají jedničky, tak je to se školstvím mnohem horší, než se obecně soudí. Nebyl to příklad pro: udělejte na minimálním počtu řádků maximum programátorských chyb?
Kdybys radsi chytraku hned v prvnim prispevku napsal jak je to neprasacky. Nebo jen tak blbe kecas?
hodnoty = [1,2,3,4]
delka = len(hodnoty)
for x in range(delka):
List je sám o sobě iterable, takže zjistit délku listu a potom vygenerovat další list (range) a ten naprat do smyčky je prasárna.
Prvek listu sice můžeme odkazovat indexem, ale když už máme smyčku, tak máme přímo hodnoty:
hodnoty = [1,2,3,4]
for h in hodnoty:
f.write(h + "\n")
Což je ale ten menší problém a začátečník na to časem přijde.
Dále se nikde nezavírá soubor f, lepší konstrukce je with open() as work_file: což automaticky uzavře a uvolní soubor i při výjimce.
Větší problém je chybné generování výsledného CSV. (Comma separated values) rfc4180
Co když budou hodnoty: ["a,b,c", "1,2", "x"]?
Program vygeneruje výstup, kde na každém řádku bude jiný počet hodnot (dejme tomu sloupců) - což není správné CSV. Vstup je třeba ošetřit.
Dále \n neodpovídá RFC, správně se řádek CSV ukončuje CRLF (\r\n).
Ještě by se dalo diskutovat o tom sčítání stringů apod.
Proto python obsahuje ve standardní knihovně modul pro práci s CSV.