Advertisement
tuomasvaltanen

Untitled

Dec 3rd, 2024 (edited)
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.08 KB | None | 0 0
  1. # Johdatus ohjelmointiin, 3.12.2024, tiedostojen käsittely Pythonilla
  2. print("Tervetuloa!")
  3.  
  4. # UUSI TEKSTITIEDOSTO - weekdays.txt
  5.  
  6. Maanantai
  7. Tiistai
  8. Keskiviikko
  9. Torstai
  10. Perjantai
  11. Lauantai
  12. Sunnuntai
  13.  
  14. # UUSI TIEDOSTO
  15.  
  16. # avataan yhteys tiedostoon
  17. file_handle = open("weekdays.txt", "r")
  18.  
  19. # luetaan tiedoston sisältö muuttujaan
  20. # => tietotyyppi on string/tekstiä
  21. content = file_handle.read()
  22.  
  23. # tulostetaan kuin mikä tahansa muuttuja
  24. print(content)
  25.  
  26. # katkaistaan aina lopuksi yhteys tiedostoon
  27. # hyvä tapa on katkaista yhteys heti sen jälkeen
  28. # kun file_handlea ei tarvita enää
  29. file_handle.close()
  30.  
  31. # UUSI TIEDOSTO
  32.  
  33. # avataan yhteys tiedostoon
  34. file_handle = open("weekdays.txt", "r")
  35.  
  36. counter = 1
  37.  
  38. # puretaan tiedoston sisältö rivi kerrallaan
  39. # niin kauan kuin tietoa on vielä jäljellä
  40. # jos tiedostossa on 100 riviä
  41. # tämä silmukka ajaa koodin 100 kertaa
  42. while True:
  43.     # haetaan seuraava rivi
  44.     line = file_handle.readline()
  45.     print(f"{counter} - {line}")
  46.     counter = counter + 1
  47.  
  48.     # jos tulee tiedoston loppu vastaan
  49.     # eli line == None, lopetetaan silmukka
  50.     if not line:
  51.         break
  52.  
  53.  
  54. # katkaistaan aina lopuksi yhteys tiedostoon
  55. # hyvä tapa on katkaista yhteys heti sen jälkeen
  56. # kun file_handlea ei tarvita enää
  57. file_handle.close()
  58.  
  59. # UUSI TIEDOSTO
  60.  
  61. # avataan yhteys tiedostoon
  62. file_handle = open("weekdays.txt", "r")
  63.  
  64. # luetaan tiedoston sisältö muuttujaan
  65. content = file_handle.read()
  66.  
  67. # katkaistaan aina lopuksi yhteys tiedostoon
  68. # hyvä tapa on katkaista yhteys heti sen jälkeen
  69. # kun file_handlea ei tarvita enää
  70. file_handle.close()
  71.  
  72. # muutetaan rivinvaihdon pohjalta listaksi
  73. lines = content.split("\n")
  74.  
  75. # nyt voimme kätevästi silmukoida datan läpi
  76. for line in lines:
  77.     print(line)
  78.  
  79. # UUSI TIEDOSTO
  80.  
  81. # avataan yhteys tiedostoon
  82. # huolehditaan encoding-parametrilla että kaikki
  83. # osapuolet käyttävät UTF-8 -formaattia
  84. # Windows-koneet ja esim. tietokantapalvelut joskus
  85. # käyttävät oletuksena Latin1 / ANSI -formaattia
  86. # ja ääkköset voivat toimia hassusti ristiin
  87. file_handle = open("muistio.txt", "w", encoding="utf-8")
  88.  
  89. # kysytään käyttäjältä viesti
  90. message = input("Kirjoita viesti:\n")
  91.  
  92. # tallennetaan tiedostoon
  93. file_handle.write(message)
  94.  
  95. # katkaistaan aina lopuksi yhteys tiedostoon
  96. # hyvä tapa on katkaista yhteys heti sen jälkeen
  97. # kun file_handlea ei tarvita enää
  98. file_handle.close()
  99.  
  100. # UUSI TIEDOSTO, a-moodilla voidaan kirjoittaa aiemman datan perään!
  101.  
  102. # avataan yhteys tiedostoon
  103. # huolehditaan encoding-parametrilla että kaikki
  104. # osapuolet käyttävät UTF-8 -formaattia
  105. file_handle = open("muistio.txt", "a", encoding="utf-8")
  106.  
  107. # kysytään käyttäjältä viesti
  108. message = input("Kirjoita viesti:\n")
  109.  
  110. # tallennetaan tiedostoon, laitetaan \n mukaan
  111. # jotta viestit tallentuvat omille riveilleen
  112. # (muutoin tallentuvat peräkkäin samalle riville)
  113. file_handle.write(message + "\n")
  114.  
  115. # katkaistaan aina lopuksi yhteys tiedostoon
  116. # hyvä tapa on katkaista yhteys heti sen jälkeen
  117. # kun file_handlea ei tarvita enää
  118. file_handle.close()
  119.  
  120. # UUSI TIEDOSTO: app_data.json
  121.  
  122. {
  123.    "name": "Rovaniemi",
  124.    "population": 62933,
  125.    "county": "Lappi"
  126. }
  127.  
  128. # UUSI TIEDOSTO
  129.  
  130. import json
  131. # import var_dump as vd
  132.  
  133. # ladataan tiedoston sisältö muuttujaan
  134. # ja suljetaan saman tien yhteys
  135. file_handle = open("app_data.json", "r")
  136. content = file_handle.read()
  137. file_handle.close()
  138.  
  139. # muutetaan raaka-JSON Pythonin dataformaattiin
  140. # => json.loads()
  141. city = json.loads(content)
  142.  
  143. # nyt voimme hakea avaimilla dataa
  144. print(city['name'])
  145. print(city['population'])
  146.  
  147. # jos haluat vertailla datatyyppejä
  148. # JSON vs Python-data:
  149. # vd.var_dump(content)
  150. # print()
  151. # vd.var_dump(city)
  152.  
  153. # UUSI TIEDOSTO
  154.  
  155. import json
  156.  
  157. # Python dictionary, esim. puhelin
  158. phone = {
  159.     "name": "Nokia 3310",
  160.     "release_year": 2000,
  161.     "battery": "1000mAh",
  162.     "camera": False,
  163.     "weight": 133
  164. }
  165.  
  166. # koska haluamme tallentaa dataa
  167. # pitää muuntaa Python-data => JSON-muotoon => json.dumps()
  168. # jos haluat JSONin helpommin luettavaan muotoon:
  169. # json.dumps(phone, indent=2)
  170. content = json.dumps(phone)
  171.  
  172. # koska content on nyt JSONia (eli tekstiä)
  173. # => tallennetaan tiedostoon
  174. file_handle = open("nokiaphone.json", "w")
  175. file_handle.write(content)
  176. file_handle.close()
  177.  
  178. print("Kiitos puhelimen lisäämisestä!")
  179.  
  180. # UUSI TEKSTITIEDOSTO: cities.json
  181.  
  182. [
  183.    {
  184.       "name":"Rovaniemi",
  185.       "population":62933,
  186.       "county":"Lappi"
  187.    },
  188.    {
  189.       "name":"Oulu",
  190.       "population":199526,
  191.       "county":"Pohjois-Pohjanmaa"
  192.    },
  193.    {
  194.       "name":"Helsinki",
  195.       "population":631695,
  196.       "county":"Uusimaa"
  197.    }
  198. ]
  199.  
  200. # UUSI TIEDOSTO
  201. # JSON ladataan ja muunnetaan
  202. # Python -formaattiin samankaltaisesti joka kerta
  203. import json
  204.  
  205. # ladataan tiedoston sisältö muuttujaan
  206. # ja suljetaan saman tien yhteys
  207. file_handle = open("cities.json", "r")
  208. content = file_handle.read()
  209. file_handle.close()
  210.  
  211. # muutetaan raaka-JSON Pythonin dataformaattiin
  212. # => json.loads()
  213. cities = json.loads(content)
  214.  
  215. # cities on nyt lista dictionaryjä Python-datana
  216. # eli voimme vain silmukoida dataa läpi
  217. for city in cities:
  218.     print(city['name'])
  219.     print(city['county'])
  220.     print(city['population'])
  221.     print()
  222.  
  223. # UUSI TIEDOSTO, ISOMPI ESIMERKKI
  224.  
  225. import json
  226.  
  227. # VAIHE 1: luetaan tämän hetkiset datat tiedostosta
  228. # ja tulostetaan allekkain
  229.  
  230. # ladataan tiedoston sisältö muuttujaan
  231. # ja suljetaan saman tien yhteys
  232. file_handle = open("cities.json", "r")
  233. content = file_handle.read()
  234. file_handle.close()
  235.  
  236. # muutetaan raaka-JSON Pythonin dataformaattiin
  237. # => json.loads()
  238. cities = json.loads(content)
  239.  
  240. # cities on nyt lista dictionaryjä Python-datana
  241. # eli voimme vain silmukoida dataa läpi
  242. for city in cities:
  243.     print(city['name'])
  244.     print(city['county'])
  245.     print(city['population'])
  246.     print()
  247.  
  248.  
  249. # VAIHE 2: kysytään käyttäjältä yksityiskohdat
  250. # ja lisätään uusi kaupunki dataan
  251. new_city_name = input("Anna uuden kaupungin nimi:\n")
  252. new_city_county = input("Anna uuden kaupungin maakunta:\n")
  253. new_city_population = input("Anna uuden kaupungin asukasluku:\n")
  254. new_city_population = int(new_city_population)
  255.  
  256. # rakennetaan uuden lisättävän kaupungin DICTIONARY
  257. # ylläolevien muuttujien pohjalta!
  258. new_city = {
  259.     "name": new_city_name,
  260.     "population": new_city_population,
  261.     "county": new_city_county
  262. }
  263.  
  264. # nyt kun meillä on uusi lisättävä kaupunki dictionary -muodossa
  265. # lisätään se olemassa olevaan cities-listaan (joka on lista dictionaryjä)
  266. cities.append(new_city)
  267.  
  268. # VAIHE 3: muutetaan cities-lista (joka koostuu dictionaryistä)
  269. # json-moduulilla Python-datasta => takaisin JSON-tekstiksi
  270.  
  271. # muutetaan Python-data => JSON-tekstiksi
  272. json_data = json.dumps(cities, indent=2)
  273.  
  274. # avataan tiedosto ja tallennetaan uusi versio
  275. # datasta vanhan päälle
  276. # HUOM! emmem voi käyttää "a" -moodia JSONin kanssa
  277. # koska se rikkoo JSON-datan rakenteen
  278. file_handle = open("cities.json", "w", encoding="utf-8")
  279. file_handle.write(json_data)
  280. file_handle.close()
  281.  
  282. print("Uusi kaupunki tallennettu onnistuneesti!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement