Jump to content
bcman

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

Recommended Posts

Posted (edited)

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
Posted


>>> 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.

Posted (edited)

Mersi. La eval nu am pus ?i .strip(). Încerc acum ?i revin cu edit. Eu salvam totul pe o linie ?i când citeam voiam s? preiau totul într-un dic?ionar.

LE: Same problem. Ai pm.

Edited by bcman
Posted (edited)

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

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...