Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Johdatus ohjelmointiin, 3.12.2024, tiedostojen käsittely Pythonilla
- print("Tervetuloa!")
- # UUSI TEKSTITIEDOSTO - weekdays.txt
- Maanantai
- Tiistai
- Keskiviikko
- Torstai
- Perjantai
- Lauantai
- Sunnuntai
- # UUSI TIEDOSTO
- # avataan yhteys tiedostoon
- file_handle = open("weekdays.txt", "r")
- # luetaan tiedoston sisältö muuttujaan
- # => tietotyyppi on string/tekstiä
- content = file_handle.read()
- # tulostetaan kuin mikä tahansa muuttuja
- print(content)
- # katkaistaan aina lopuksi yhteys tiedostoon
- # hyvä tapa on katkaista yhteys heti sen jälkeen
- # kun file_handlea ei tarvita enää
- file_handle.close()
- # UUSI TIEDOSTO
- # avataan yhteys tiedostoon
- file_handle = open("weekdays.txt", "r")
- counter = 1
- # puretaan tiedoston sisältö rivi kerrallaan
- # niin kauan kuin tietoa on vielä jäljellä
- # jos tiedostossa on 100 riviä
- # tämä silmukka ajaa koodin 100 kertaa
- while True:
- # haetaan seuraava rivi
- line = file_handle.readline()
- print(f"{counter} - {line}")
- counter = counter + 1
- # jos tulee tiedoston loppu vastaan
- # eli line == None, lopetetaan silmukka
- if not line:
- break
- # katkaistaan aina lopuksi yhteys tiedostoon
- # hyvä tapa on katkaista yhteys heti sen jälkeen
- # kun file_handlea ei tarvita enää
- file_handle.close()
- # UUSI TIEDOSTO
- # avataan yhteys tiedostoon
- file_handle = open("weekdays.txt", "r")
- # luetaan tiedoston sisältö muuttujaan
- content = file_handle.read()
- # katkaistaan aina lopuksi yhteys tiedostoon
- # hyvä tapa on katkaista yhteys heti sen jälkeen
- # kun file_handlea ei tarvita enää
- file_handle.close()
- # muutetaan rivinvaihdon pohjalta listaksi
- lines = content.split("\n")
- # nyt voimme kätevästi silmukoida datan läpi
- for line in lines:
- print(line)
- # UUSI TIEDOSTO
- # avataan yhteys tiedostoon
- # huolehditaan encoding-parametrilla että kaikki
- # osapuolet käyttävät UTF-8 -formaattia
- # Windows-koneet ja esim. tietokantapalvelut joskus
- # käyttävät oletuksena Latin1 / ANSI -formaattia
- # ja ääkköset voivat toimia hassusti ristiin
- file_handle = open("muistio.txt", "w", encoding="utf-8")
- # kysytään käyttäjältä viesti
- message = input("Kirjoita viesti:\n")
- # tallennetaan tiedostoon
- file_handle.write(message)
- # katkaistaan aina lopuksi yhteys tiedostoon
- # hyvä tapa on katkaista yhteys heti sen jälkeen
- # kun file_handlea ei tarvita enää
- file_handle.close()
- # UUSI TIEDOSTO, a-moodilla voidaan kirjoittaa aiemman datan perään!
- # avataan yhteys tiedostoon
- # huolehditaan encoding-parametrilla että kaikki
- # osapuolet käyttävät UTF-8 -formaattia
- file_handle = open("muistio.txt", "a", encoding="utf-8")
- # kysytään käyttäjältä viesti
- message = input("Kirjoita viesti:\n")
- # tallennetaan tiedostoon, laitetaan \n mukaan
- # jotta viestit tallentuvat omille riveilleen
- # (muutoin tallentuvat peräkkäin samalle riville)
- file_handle.write(message + "\n")
- # katkaistaan aina lopuksi yhteys tiedostoon
- # hyvä tapa on katkaista yhteys heti sen jälkeen
- # kun file_handlea ei tarvita enää
- file_handle.close()
- # UUSI TIEDOSTO: app_data.json
- {
- "name": "Rovaniemi",
- "population": 62933,
- "county": "Lappi"
- }
- # UUSI TIEDOSTO
- import json
- # import var_dump as vd
- # ladataan tiedoston sisältö muuttujaan
- # ja suljetaan saman tien yhteys
- file_handle = open("app_data.json", "r")
- content = file_handle.read()
- file_handle.close()
- # muutetaan raaka-JSON Pythonin dataformaattiin
- # => json.loads()
- city = json.loads(content)
- # nyt voimme hakea avaimilla dataa
- print(city['name'])
- print(city['population'])
- # jos haluat vertailla datatyyppejä
- # JSON vs Python-data:
- # vd.var_dump(content)
- # print()
- # vd.var_dump(city)
- # UUSI TIEDOSTO
- import json
- # Python dictionary, esim. puhelin
- phone = {
- "name": "Nokia 3310",
- "release_year": 2000,
- "battery": "1000mAh",
- "camera": False,
- "weight": 133
- }
- # koska haluamme tallentaa dataa
- # pitää muuntaa Python-data => JSON-muotoon => json.dumps()
- # jos haluat JSONin helpommin luettavaan muotoon:
- # json.dumps(phone, indent=2)
- content = json.dumps(phone)
- # koska content on nyt JSONia (eli tekstiä)
- # => tallennetaan tiedostoon
- file_handle = open("nokiaphone.json", "w")
- file_handle.write(content)
- file_handle.close()
- print("Kiitos puhelimen lisäämisestä!")
- # UUSI TEKSTITIEDOSTO: cities.json
- [
- {
- "name":"Rovaniemi",
- "population":62933,
- "county":"Lappi"
- },
- {
- "name":"Oulu",
- "population":199526,
- "county":"Pohjois-Pohjanmaa"
- },
- {
- "name":"Helsinki",
- "population":631695,
- "county":"Uusimaa"
- }
- ]
- # UUSI TIEDOSTO
- # JSON ladataan ja muunnetaan
- # Python -formaattiin samankaltaisesti joka kerta
- import json
- # ladataan tiedoston sisältö muuttujaan
- # ja suljetaan saman tien yhteys
- file_handle = open("cities.json", "r")
- content = file_handle.read()
- file_handle.close()
- # muutetaan raaka-JSON Pythonin dataformaattiin
- # => json.loads()
- cities = json.loads(content)
- # cities on nyt lista dictionaryjä Python-datana
- # eli voimme vain silmukoida dataa läpi
- for city in cities:
- print(city['name'])
- print(city['county'])
- print(city['population'])
- print()
- # UUSI TIEDOSTO, ISOMPI ESIMERKKI
- import json
- # VAIHE 1: luetaan tämän hetkiset datat tiedostosta
- # ja tulostetaan allekkain
- # ladataan tiedoston sisältö muuttujaan
- # ja suljetaan saman tien yhteys
- file_handle = open("cities.json", "r")
- content = file_handle.read()
- file_handle.close()
- # muutetaan raaka-JSON Pythonin dataformaattiin
- # => json.loads()
- cities = json.loads(content)
- # cities on nyt lista dictionaryjä Python-datana
- # eli voimme vain silmukoida dataa läpi
- for city in cities:
- print(city['name'])
- print(city['county'])
- print(city['population'])
- print()
- # VAIHE 2: kysytään käyttäjältä yksityiskohdat
- # ja lisätään uusi kaupunki dataan
- new_city_name = input("Anna uuden kaupungin nimi:\n")
- new_city_county = input("Anna uuden kaupungin maakunta:\n")
- new_city_population = input("Anna uuden kaupungin asukasluku:\n")
- new_city_population = int(new_city_population)
- # rakennetaan uuden lisättävän kaupungin DICTIONARY
- # ylläolevien muuttujien pohjalta!
- new_city = {
- "name": new_city_name,
- "population": new_city_population,
- "county": new_city_county
- }
- # nyt kun meillä on uusi lisättävä kaupunki dictionary -muodossa
- # lisätään se olemassa olevaan cities-listaan (joka on lista dictionaryjä)
- cities.append(new_city)
- # VAIHE 3: muutetaan cities-lista (joka koostuu dictionaryistä)
- # json-moduulilla Python-datasta => takaisin JSON-tekstiksi
- # muutetaan Python-data => JSON-tekstiksi
- json_data = json.dumps(cities, indent=2)
- # avataan tiedosto ja tallennetaan uusi versio
- # datasta vanhan päälle
- # HUOM! emmem voi käyttää "a" -moodia JSONin kanssa
- # koska se rikkoo JSON-datan rakenteen
- file_handle = open("cities.json", "w", encoding="utf-8")
- file_handle.write(json_data)
- file_handle.close()
- print("Uusi kaupunki tallennettu onnistuneesti!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement