Jump to content
bcman

[Python] Citirea şi scrierea unui dicţionar din fişier

Recommended Posts

A? dori s? fac un program în Python, care s? citeasc? un dic?ionar dintr-un fi?ier (dic?ionar creat anterior tot de acest program) sau dac? fi?ierul e gol s? omit? aceast? parte. Apoi s? ofere mai multe op?iuni, printre care: ?tergerea uneia dintre cheile din dic?ionar ?i rescrierea dic?ionarului în fi?ier f?r? acea cheie; c?utarea în func?ie de cheie ?i afi?area valorii corespunz?toare; citirea dic?ionarului, a dou? valori, una ce corespunde cheii, iar cealalt? valorii, crearea unui dic?ionar temporar cu aceste dou? valori ?i înnoirea dic?ionarului citit din fi?ier cu acest nou dic?ionar. Problema o întâmpin la citirea dic?ionarului din fi?ier (am reu?it s? fac totul în afar? de asta, chiar ?i scrierea lui în fi?ier în formatul: "{'a':'b'}"). Am c?utat foarte multe metode pe net, dar niciuna nu a mers (printre care eval() ?i pickle). Cum a? putea s? rezolv problema?

Edited by bcman
Link to comment
Share on other sites


>>> f = open("text.txt", "w")
>>> string = "{'a': 'b', 'c': 1}"
>>> f.write(string)
>>> f.close()
>>> f = open("text.txt", "r")
>>> x = eval(f.read().strip())
>>> f.close()
>>> x
{'a': 'b', 'c': 1}
>>> type(x)
<type 'dict'>
>>>

Eu vad ca functioneaza cum trebuie eval :). Cu pickle poti intr-un mod mai avansat sa stochezi mai mult definitii de clase/functii, variabile primitive, dar nu functioneaza intotdeauna cum trebuie si pentru orice mai ales cand e vorba de continut.

Ideea este sa scrii cuvintele in fisier cate doua pe fiecare rand despartite prin spatiu si iei linie cu linie la citire, careia ii dai split si primul element din lista split se duce in cheie si al doilea se duce in valoarea ei si in felul asta poti da update mai misto.

Link to comment
Share on other sites

Ti-am raspuns, grija mare la cum se face I/O pe fisiere, mai ales in politica Python.

Incearca sa faci mereu str(input) daca vrei compatibilitate si cu 2.x ca sa nu folosesti raw_input :), la asta ma refeream la acel punct care se vede ca il aveai deja rezolvat.

Edited by cmiN
  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...