2017-07-09 88 views
0

我寫了下面的代碼,但我得到了酸洗錯誤。我不知道什麼是錯誤的。在Sympy模塊中的python代碼PicklingError

x = Symbol('x') 
    y = Symbol('y') 

    f = Function('f')(x) 
    h = Function('h')(x) 

    g = Function('g')(y) 
    t = Function('t')(y) 
    X1 = f + g 
    X2 = h * t 
    E = 1 + (f.diff(x)) ** 2 + (f.diff(x) * g) ** 2 
    F = f.diff(x) * g.diff(y) + f.diff(x) * g.diff(y) * f * g 
    G = 1 + (g.diff(y)) ** 2 + (f * g.diff(y)) ** 2 

    MainD = 2 * (E * G - F ** 2) 
    with open('M.pickle', 'wb') as outf: 
    outf.write(pickle.dumps(MainD)) 

,我得到了以下錯誤消息:

Can not pickle f: it is not the same object as _main_ .f 
+0

請提一下你得到的picklng錯誤類型。另外提供errortrace有助於發現問題。 – Mani

+0

@Mani我添加了錯誤。 – Baghban

回答

1

pickle甚至dill沒有人有Sympy完整的兼容性。但是,您可以將輸出轉換爲字符串,然後在txt文件中寫入/讀取。以下是基於您的代碼的示例。

Str_MainD = str(MainD) 
with open('M.py', 'w') as file: 
    file.write(Str_MainD) 

現在,

with open('M.py', 'r') as file: 
    Read_From_File = file.read() 

您可以在另一個腳本讀取它(如果第二腳本由一些Simpy碼操作,使用eval(file.read())代替)。