Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Johdatus ohjelmointiin, 14.11.2023, tiedostojen käsittely Pythonilla
- print("Tervetuloa!")
- # UUSI TEKSTITIEDOSTO - weekdays.txt
- Maanantai
- Tiistai
- Keskiviikko
- Torstai
- Perjantai
- Lauantai
- Sunnuntai
- # UUSI TIEDOSTO
- # aukaistaan yhteys tiedostoon
- file_handle = open("weekdays.txt", "r")
- # luetaan tiedoston sisältö muuttujaan
- # => tietotyyppi on string
- content = file_handle.read()
- # suljetaan varmuuden vuoksi yhteys tiedostoon
- file_handle.close()
- print(content)
- # UUSI TIEDOSTO
- # aukaistaan yhteys tiedostoon
- file_handle = open("weekdays.txt", "r")
- # tehdään juokseva rivinumero
- counter = 1
- # puretaan tiedoston sisältöä rivi kerrallaan
- # niin kauan kuin sitä vielä on jäljellä
- # jos tiedostossa on 100 riviä, tämä koodi
- # ajetaan 100 kertaa
- while True:
- # haetaan seuraava rivi ja tulostetaan
- line = file_handle.readline()
- print(f"{counter}. {line}")
- # kasvatetaan laskurimuuttujaa
- counter = counter + 1
- # jos rivit loppuivat tiedostosta => break
- if not line:
- break
- # suljetaan varmuuden vuoksi yhteys tiedostoon
- file_handle.close()
- # UUSI TIEDOSTO
- # aukaistaan yhteys tiedostoon
- file_handle = open("weekdays.txt", "r")
- # luetaan tiedoston sisältö muuttujaan
- # => tietotyyppi on string
- content = file_handle.read()
- # suljetaan varmuuden vuoksi yhteys tiedostoon
- file_handle.close()
- # muutetaan content -> listaksi string-muuttujia
- lines = content.split("\n")
- # tulostetaan lista läpi
- for line in lines:
- print(line)
- print()
- # koska lines on ihan tavallinen lista, kaikki vanhat opit käyvät
- amount = len(lines)
- # tulostetaan numeroitu lista niinkuin ennenkin
- # (materiaalit -> toistolauseet, sivu 62
- for index in range(amount):
- line = lines[index]
- print(f"{index + 1}. {line}")
- # UUSI TIEDOSTO
- # aukaistaan yhteys tiedostoon -> kirjoitusmoodi -> w
- # 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ä tallennettava teksti
- text = input("Anna jotain tekstiä:\n")
- # kirjoitetaan tiedostoon käyttäjän antama teksti
- file_handle.write(text)
- # suljetaan varmuuden vuoksi yhteys tiedostoon
- file_handle.close()
- # UUSI TIEDOSTO - a-moodi -> append
- # aukaistaan yhteys tiedostoon -> kirjoitusmoodi -> a
- # 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", "a", encoding="utf-8")
- # kysytään käyttäjältä tallennettava teksti
- text = input("Anna jotain tekstiä:\n")
- # appendin avulla aiempaa sisältöä ei pyyhitä pois
- # vaan lisätään vanhan perään
- # jos haluat kaikki uudet viestit omille riveilleen
- # lisää perään myös \n
- # kirjoitetaan tiedostoon käyttäjän antama teksti
- file_handle.write(text + "\n")
- # suljetaan varmuuden vuoksi yhteys tiedostoon
- file_handle.close()
- # TEHDÄÄN UUSI TIEDOSTO: app_data.json:
- {
- "name":"Rovaniemi",
- "population":62933,
- "county":"Lappi"
- }
- # UUSI TIEDOSTO
- import json
- # import var_dump as vd
- file_handle = open("app_data.json", "r")
- content = file_handle.read()
- file_handle.close()
- # muutetaan JSON-data (tekstiä) -> Python-dataksi
- # => json.loads()
- city = json.loads(content)
- # koska city on nyt oikea Python dictionary
- # => tulostetaan pari kenttää testimielessä
- print(city['name'])
- print(city['population'])
- # jos haluat vertailla datatyyppejä
- # JSON vs Python-data:
- # vd.var_dump(content)
- # 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
- }
- # Python data => muutetaan JSON-formaattiin (eli tekstiksi)
- # Huom: tekstin voi tallentaa tiedostoon,
- # Python dataa ei voi suoraan tallentaa
- content = json.dumps(phone)
- # koska content on nyt JSON -tekstiä
- # => tallennetaan tiedostoon
- file_handle = open("nokiaphone.json", "w")
- file_handle.write(content)
- file_handle.close()
- print("Kiitos puhelimen tallentamisesta!")
- # 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
- import json
- # luetaan cities.json muuttujaan
- file_handle = open("cities.json", "r")
- content = file_handle.read()
- file_handle.close()
- # muutetaan data JSON-formaatista => Python-dataksi
- # käytännössä tämä data tuottaa listan dictionaryjä
- cities = json.loads(content)
- # silmukalla läpi ja tulostetaan kaupunkien tiedot
- # yksi kaupunki kerrallaan
- for city in cities:
- print(city['name'])
- print(city['county'])
- print(city['population'])
- print()
- # UUSI TIEDOSTO
- # MONIMUTKAISEMPI ESIMERKKI, JOSSA TALLENNETAAN JSON-TIEDOSTOON UUTTA DATAA
- import json
- # luetaan cities.json muuttujaan
- file_handle = open("cities.json", "r", encoding="utf-8")
- content = file_handle.read()
- file_handle.close()
- # muutetaan data JSON-formaatista => Python-dataksi
- # käytännössä tämä data tuottaa listan dictionaryjä
- cities = json.loads(content)
- # silmukalla läpi ja tulostetaan kaupunkien tiedot
- # yksi kaupunki kerrallaan
- for city in cities:
- print(city['name'])
- print(city['county'])
- print(city['population'])
- print()
- # VAIHE 2: kysytään käyttäjältä uuden kaupungin tiedot
- 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 kaupungin DICTIONARY ylläolevista muuttujista!
- new_city = {
- "name": new_city_name,
- "population": new_city_population,
- "county": new_city_county
- }
- # koska cities on Python-lista, voidaan uusi kaupunki lisätä
- # listan perälle append()-funktion avulla
- cities.append(new_city)
- # VAIHE 3: muutetaan cities-lista (joka koostuu dictionaryistä)
- # json-moduulilla Python-datasta => JSON-tekstiksi
- # kaikki muutokset on tallennettu cities-listaan
- # joten voimme jyrätä vanhan tiedoston yli
- # tällä uudella data-versiolla
- # luodaan Python-datasta JSON-tekstiversio =>
- json_data = json.dumps(cities)
- # avataan tiedosto kirjoitusmoodissa "w"
- # ja tallennetaan uusi data vanhan päälle
- # HUOM: append-moodia (a) ei voi käyttää JSONin kanssa
- # koska JSONin datarakenne (JSONin syntaksi) menee rikki
- 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