2016-11-18 6 views

Antwort

2

können Sie verwenden:

with open('filename') as f: 
    d = eval(f.read()) 

Beachten Sie, dass eval sollte mit Vorsicht verwendet werden, wie es in den Kommentaren erwähnt, weil Sie schädlichen Code ausführen kann am Ende, wenn der Eingang nicht 100% in Ihrer Steuerung.

+0

'eval' kann schlechte Dinge tun, wenn Sie nicht 100% Kontrolle über den Inhalt der Datei haben. –

+0

@MarkRansom Sehr wahr. Benachrichtigung hinzugefügt –

4

Sie können auch ast.literal_eval verwenden.

import ast 
ast.literal_eval("[{'a':'1', 'b':'2'},{'a':'3','b':'4'}]") 

-Hilfe-Funktion literal_eval in Modul ast:

literal_eval (node_or_string) sicher einen Ausdruck Knoten oder eine Zeichenfolge auszuwerten einen Python Ausdruck enthält. Der angegebene String oder Knoten darf nur aus den folgenden Python-Literalstrukturen bestehen: Strings, Bytes, Zahlen, Tupeln, Listen, Dicts, Sets, booleschen Werten und None.

lernte ich diesen Trick bei https://stackoverflow.com/a/21154138/1415639

+1

Ah, du hast mich 9 Sekunden geschlagen –

2

Sie literal_eval von ast verwenden können, die eine sicherere Lösung von eval ist. Sie können sehen, warum Sie nicht evalhere und here verwenden sollten.

Also, was würden Sie sein wollen:

from ast import literal_eval 


with open('file.txt') as f: 
    dictionaries = literal_eval(f.read().strip()) 
Verwandte Themen