Hei. Minun piti palata alkuun, kun halusinkin tehdä tiedostoon tallentamisen eri tavalla ja nyt kaipaan hieman apua:
Minulla on lista elaintarha ja sinne on tarkoitus laittaa numeroita joita voin myöhemmin laskea yhteen, haluan myös, että nämä ovat tekstitiedostossa samalla rivillä.
Tallennan tuon elaintarhalistan ja yritän avata sen nimellä nimellä elaintarha3, mutta se on muuttanut muotoaan alkuperäisestä elaintarhalistasta:
elaintarhalista = [1, 4] elaintarhalista3 = ['[1, 4]\n']
Mitä teen?
Kiitos:-)
elaintarha = [1,4] tiedosto = open("tiedostonimi.txt", "w") tiedosto.write(str(elaintarha) + "\n") tiedosto.close() tiedosto = open("tiedostonimi.txt", "r") elaintarha3=tiedosto.readlines() tiedosto.close() print(elaintarha) print(elaintarha3)
Ongelma on siinä, että kirjoittamisen yhteydessä muutat listan tekstiksi (kuten on toki jollain tavalla tehtävä) mutta lukemisen yhteydessä luet vain tiedoston kaikki rivit tekstinä etkä mitenkään tulkitse niistä listaa. Sinulla on kaksi vaihtoehtoa: voit tallentaa listan tiedostoon niin, että yksi kohta on yhdellä rivillä, tai voit muuttaa listan johonkin sellaiseen tekstimuotoon, että se on mahdollista lukemisen yhteydessä myös muuttaa takaisin listaksi. Jälkimmäinen tapa on yleensä helpompi ja toimii hyvin myös monimutkaisemmilla tietorakenteilla.
Vaikkapa JSON-muotoisen datan tallennus ja lukeminen onnistuu näin:
import json # testidataa data = [1, 2, 3, {'4': 5, '6': 7}] print("Data:", data) # kirjoitus with open("tmp.txt", "w") as f: json.dump(data, f, indent=1) f.write("\n") # jos välttämättä haluat rivinvaihdon... # tarkastus with open("tmp.txt", "r") as f: print("Tiedosto:\n" + f.read()) # lukeminen with open("tmp.txt", "r") as f: data = json.load(f) # tarkastus print("Data:", data)
Hei ja kiitos oikein paljon, jälleen kerran:-)
Sinä varmaan osaisit vastata tähänkin probleemaan:
Ohjelmani laatii tekstitiedoston .txt ja haluaisin ohjelman tulostavan tuon. Notepadilla tulostaminen onnistuisi helposti, mutta haluaisin ohjelman tekevän tuon, mitenköhän tämä onnistuisi?
Kiitos
Näytölle tulostaminen: https://stackoverflow.com/questions/8084260/
Tulostimelle tulostaminen: https://stackoverflow.com/questions/12723818/
Aihe on jo aika vanha, joten et voi enää vastata siihen.