Advertisement
tuomasvaltanen

Untitled

Nov 14th, 2023 (edited)
757
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.12 KB | None | 0 0
  1. # Johdatus ohjelmointiin, 14.11.2023, 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. # aukaistaan yhteys tiedostoon
  17. file_handle = open("weekdays.txt", "r")
  18.  
  19. # luetaan tiedoston sisältö muuttujaan
  20. # => tietotyyppi on string
  21. content = file_handle.read()
  22.  
  23. # suljetaan varmuuden vuoksi yhteys tiedostoon
  24. file_handle.close()
  25.  
  26. print(content)
  27.  
  28. # UUSI TIEDOSTO
  29.  
  30. # aukaistaan yhteys tiedostoon
  31. file_handle = open("weekdays.txt", "r")
  32.  
  33. # tehdään juokseva rivinumero
  34. counter = 1
  35.  
  36. # puretaan tiedoston sisältöä rivi kerrallaan
  37. # niin kauan kuin sitä vielä on jäljellä
  38. # jos tiedostossa on 100 riviä, tämä koodi
  39. # ajetaan 100 kertaa
  40. while True:
  41.     # haetaan seuraava rivi ja tulostetaan
  42.     line = file_handle.readline()
  43.     print(f"{counter}. {line}")
  44.  
  45.     # kasvatetaan laskurimuuttujaa
  46.     counter = counter + 1
  47.  
  48.     # jos rivit loppuivat tiedostosta => break
  49.     if not line:
  50.         break
  51.  
  52. # suljetaan varmuuden vuoksi yhteys tiedostoon
  53. file_handle.close()
  54.  
  55. # UUSI TIEDOSTO
  56.  
  57. # aukaistaan yhteys tiedostoon
  58. file_handle = open("weekdays.txt", "r")
  59.  
  60. # luetaan tiedoston sisältö muuttujaan
  61. # => tietotyyppi on string
  62. content = file_handle.read()
  63.  
  64. # suljetaan varmuuden vuoksi yhteys tiedostoon
  65. file_handle.close()
  66.  
  67. # muutetaan content -> listaksi string-muuttujia
  68. lines = content.split("\n")
  69.  
  70. # tulostetaan lista läpi
  71. for line in lines:
  72.     print(line)
  73.  
  74. print()
  75.  
  76. # koska lines on ihan tavallinen lista, kaikki vanhat opit käyvät
  77. amount = len(lines)
  78.  
  79. # tulostetaan numeroitu lista niinkuin ennenkin
  80. # (materiaalit -> toistolauseet, sivu 62
  81. for index in range(amount):
  82.     line = lines[index]
  83.     print(f"{index + 1}. {line}")
  84.  
  85. # UUSI TIEDOSTO
  86.  
  87. # aukaistaan yhteys tiedostoon -> kirjoitusmoodi -> w
  88. # huolehditaan encoding-parametrilla että kaikki
  89. # osapuolet käyttävät UTF-8 -formaattia
  90. # Windows-koneet ja esim. tietokantapalvelut joskus
  91. # käyttävät oletuksena Latin1 / ANSI -formaattia
  92. # ja ääkköset voivat toimia hassusti ristiin
  93. file_handle = open("muistio.txt", "w", encoding="utf-8")
  94.  
  95. # kysytään käyttäjältä tallennettava teksti
  96. text = input("Anna jotain tekstiä:\n")
  97.  
  98. # kirjoitetaan tiedostoon käyttäjän antama teksti
  99. file_handle.write(text)
  100.  
  101. # suljetaan varmuuden vuoksi yhteys tiedostoon
  102. file_handle.close()
  103.  
  104. # UUSI TIEDOSTO - a-moodi -> append
  105.  
  106. # aukaistaan yhteys tiedostoon -> kirjoitusmoodi -> a
  107. # huolehditaan encoding-parametrilla että kaikki
  108. # osapuolet käyttävät UTF-8 -formaattia
  109. # Windows-koneet ja esim. tietokantapalvelut joskus
  110. # käyttävät oletuksena Latin1 / ANSI -formaattia
  111. # ja ääkköset voivat toimia hassusti ristiin
  112. file_handle = open("muistio.txt", "a", encoding="utf-8")
  113.  
  114. # kysytään käyttäjältä tallennettava teksti
  115. text = input("Anna jotain tekstiä:\n")
  116.  
  117. # appendin avulla aiempaa sisältöä ei pyyhitä pois
  118. # vaan lisätään vanhan perään
  119. # jos haluat kaikki uudet viestit omille riveilleen
  120.  
  121. # lisää perään myös \n
  122.  
  123. # kirjoitetaan tiedostoon käyttäjän antama teksti
  124. file_handle.write(text + "\n")
  125.  
  126. # suljetaan varmuuden vuoksi yhteys tiedostoon
  127. file_handle.close()
  128.  
  129. # TEHDÄÄN UUSI TIEDOSTO: app_data.json:
  130.  
  131. {
  132.    "name":"Rovaniemi",
  133.    "population":62933,
  134.    "county":"Lappi"
  135. }
  136.  
  137. # UUSI TIEDOSTO
  138.  
  139. import json
  140. # import var_dump as vd
  141.  
  142. file_handle = open("app_data.json", "r")
  143. content = file_handle.read()
  144. file_handle.close()
  145.  
  146. # muutetaan JSON-data (tekstiä) -> Python-dataksi
  147. # => json.loads()
  148. city = json.loads(content)
  149.  
  150. # koska city on nyt oikea Python dictionary
  151. # => tulostetaan pari kenttää testimielessä
  152. print(city['name'])
  153. print(city['population'])
  154.  
  155. # jos haluat vertailla datatyyppejä
  156. # JSON vs Python-data:
  157. # vd.var_dump(content)
  158. # vd.var_dump(city)
  159.  
  160. # UUSI TIEDOSTO
  161.  
  162. import json
  163.  
  164. # Python dictionary, esim. puhelin
  165. phone = {
  166.     "name": "Nokia 3310",
  167.     "release_year": 2000,
  168.     "battery": "1000mAh",
  169.     "camera": False,
  170.     "weight": 133
  171. }
  172.  
  173. # Python data => muutetaan JSON-formaattiin (eli tekstiksi)
  174. # Huom: tekstin voi tallentaa tiedostoon,
  175. # Python dataa ei voi suoraan tallentaa
  176. content = json.dumps(phone)
  177.  
  178. # koska content on nyt JSON -tekstiä
  179. # => tallennetaan tiedostoon
  180. file_handle = open("nokiaphone.json", "w")
  181. file_handle.write(content)
  182. file_handle.close()
  183.  
  184. print("Kiitos puhelimen tallentamisesta!")
  185.  
  186. # UUSI TEKSTITIEDOSTO : cities.json:
  187.  
  188. [
  189.    {
  190.       "name":"Rovaniemi",
  191.       "population":62933,
  192.       "county":"Lappi"
  193.    },
  194.    {
  195.       "name":"Oulu",
  196.       "population":199526,
  197.       "county":"Pohjois-Pohjanmaa"
  198.    },
  199.    {
  200.       "name":"Helsinki",
  201.       "population":631695,
  202.       "county":"Uusimaa"
  203.    }
  204. ]
  205.  
  206. # UUSI TIEDOSTO
  207.  
  208. import json
  209.  
  210. # luetaan cities.json muuttujaan
  211. file_handle = open("cities.json", "r")
  212. content = file_handle.read()
  213. file_handle.close()
  214.  
  215. # muutetaan data JSON-formaatista => Python-dataksi
  216. # käytännössä tämä data tuottaa listan dictionaryjä
  217. cities = json.loads(content)
  218.  
  219. # silmukalla läpi ja tulostetaan kaupunkien tiedot
  220. # yksi kaupunki kerrallaan
  221. for city in cities:
  222.     print(city['name'])
  223.     print(city['county'])
  224.     print(city['population'])
  225.     print()
  226.  
  227. # UUSI TIEDOSTO
  228. # MONIMUTKAISEMPI ESIMERKKI, JOSSA TALLENNETAAN JSON-TIEDOSTOON UUTTA DATAA
  229.  
  230. import json
  231.  
  232. # luetaan cities.json muuttujaan
  233. file_handle = open("cities.json", "r", encoding="utf-8")
  234. content = file_handle.read()
  235. file_handle.close()
  236.  
  237. # muutetaan data JSON-formaatista => Python-dataksi
  238. # käytännössä tämä data tuottaa listan dictionaryjä
  239. cities = json.loads(content)
  240.  
  241. # silmukalla läpi ja tulostetaan kaupunkien tiedot
  242. # yksi kaupunki kerrallaan
  243. for city in cities:
  244.     print(city['name'])
  245.     print(city['county'])
  246.     print(city['population'])
  247.     print()
  248.  
  249. # VAIHE 2: kysytään käyttäjältä uuden kaupungin tiedot
  250. new_city_name = input("Anna uuden kaupungin nimi:\n")
  251. new_city_county = input("Anna uuden kaupungin maakunta:\n")
  252. new_city_population = input("Anna uuden kaupungin asukasluku:\n")
  253. new_city_population = int(new_city_population)
  254.  
  255. # rakennetaan uuden kaupungin DICTIONARY ylläolevista muuttujista!
  256. new_city = {
  257.     "name": new_city_name,
  258.     "population": new_city_population,
  259.     "county": new_city_county
  260. }
  261.  
  262. # koska cities on Python-lista, voidaan uusi kaupunki lisätä
  263. # listan perälle append()-funktion avulla
  264. cities.append(new_city)
  265.  
  266. # VAIHE 3: muutetaan cities-lista (joka koostuu dictionaryistä)
  267. # json-moduulilla Python-datasta => JSON-tekstiksi
  268.  
  269. # kaikki muutokset on tallennettu cities-listaan
  270. # joten voimme jyrätä vanhan tiedoston yli
  271. # tällä uudella data-versiolla
  272.  
  273. # luodaan Python-datasta JSON-tekstiversio =>
  274. json_data = json.dumps(cities)
  275.  
  276. # avataan tiedosto kirjoitusmoodissa "w"
  277. # ja tallennetaan uusi data vanhan päälle
  278. # HUOM: append-moodia (a) ei voi käyttää JSONin kanssa
  279. # koska JSONin datarakenne (JSONin syntaksi) menee rikki
  280. file_handle = open("cities.json", "w", encoding="utf-8")
  281. file_handle.write(json_data)
  282. file_handle.close()
  283.  
  284. print("Uusi kaupunki tallennettu onnistuneesti")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement