0

多くの変数をファイルに保存しようとしています。JSON、ピクル、シェルブを試しましたが、それらはすべて1つの変数しかとらないようです

import shelve
myShelve = shelve.open('my.shelve')
myShelve.update(aasd,
    basd,
    casd,
    dasd,
    easd,
    fasd,
    gasd,
    hasd,
    iasd,
    jasd)
myShelve.close()

そしてピクルス

import pickle
with open("vars.txt", "wb") as File:
    pickle.dumps(aasd,
        basd,
        casd,
        dasd,
        easd,
        fasd,
        gasd,
        hasd,
        iasd,
        jasd,
        File)

私が得ているエラーは、

TypeError: update() takes at most 2 positional arguments (11 given)

TypeError: pickle.dumps() takes at most 2 positional argument (11 given)

データベースを使用する以外に変数を保存する方法が他にあるかどうかはわかりませんが、それは私が現在できることを少し超えています.

4

3 に答える 3

0

EDIT:変数を保存する別の方法を考えましたが、少し奇妙で、教祖はこれについてどう思うのだろうか.

変数定義の python コードを含むファイルを保存できます。たとえばvars.py、値を定義する単純なステートメントで構成されています。

x = 30
y = [1,2,3]

次に、それをプログラムにロードするだけで、入力したかのfrom vars import *ようxy定義されます。


以下の元の通常の回答...

JSON を使用して名前を再定義せずに変数を取得する方法がありますが、最初に変数の辞書を作成する必要があります。

import json

vars={}  # the dictionary we will save.

LoL = [ range(5), list("ABCDE"), range(5) ]
vars['LOList'] = LoL
vars['x'] = 24
vars['y'] = "abc"

with open('Jfile.txt','w') as myfile:
    json.dump(vars,myfile,indent=2)

それらを再度ロードするには:

with open('Jfile.txt','r') as infile:
    D = json.load(infile)

    # The "trick" to get the variables in as x,y,etc:
    globals().update(D)

x と y は辞書エントリから定義されます。

print x,y
24 abc

変数ごとの定義を使用する代替手段もあります。このように、事前に辞書を作成する必要はありませんが変数を再度読み込むときに、適切な順序で変数の名前を変更する必要があります。

z=26
w="def"

with open('Jfile2.txt','w') as myfile:
    json.dump([z,w],myfile,indent=2)

with open('Jfile2.txt','r') as infile:
    zz,ww = json.load(infile)

そして出力:

print zz,ww
26 def
于 2013-10-31T00:48:02.620 に答える