1

Python2.5について質問があります。まず、次のようにリスト形式でファイルを保存します。

list_f = open("list.txt", "w")
list = [{"a" : "b", "c" : 100}, {"a" : "c", "c" : 101}]
print >> list_f, list

したがって、次のようなlist.txtを取得します。

[{'a' : 'b', 'c': 100}, {'a' : 'c', 'c' : 101}]

これは、このファイルの唯一の行です。リストには2つのdictオブジェクトがあり、各dictにはStringの値とintegerの値があることに注意してください。

私の質問は、ファイルをロードして、リストオブジェクトを前のオブジェクトとして再作成する方法です。

4

4 に答える 4

2

を使用してオブジェクトを復元できますast.literal_eval()が、実際には、JSONやPythonのpickleモジュールなどの適切なシリアル化形式を使用する必要があります。

例:

# JSON
import json
# saving
with open("a.json", "w") as f:
    json.dump(obj, f)
# loading
with(open("a.json") as f:
    obj = json.load(f)

ピクルスの場合は、すべての出現箇所を。に置き換えjsonますpickle

于 2012-07-25T14:07:05.353 に答える
1

代わりに、json標準ライブラリモジュールを使用して実行しjson.dump(my_list)、それを読み取りますjson.load(my_file_with_my_lists)。これにより、リストがJSONに変換され、再度読み取られます。

乾杯。

于 2012-07-25T14:06:14.580 に答える
1
import ast
with open('list.txt') as f:
    output = ast.literal_eval(f.read())

output文字列表現が返すのではなく、辞書の実際のリストとして返されますf.read()

とにかく、ファイルの書き込みと読み取りの両方を行う場合は、cPickleまたはなどのシリアル化インターフェイスを使用してjsonください。

于 2012-07-25T14:06:49.247 に答える
0

このhttp://docs.python.org/library/functions.html#execfile関数は、組み込み関数から使用できます。しかし、より良い方法は、Pythonデータ構造をファイルに保存するためにhttp://docs.python.org/library/pickle.htmlモジュールを使用することです。

于 2012-07-25T14:14:13.147 に答える