簡體   English   中英

在 .CSV 文件中保存/加載數據的最佳方法

[英]Best Way To Save/Load Data To/From A .CSV File

我正在嘗試在.csv文件中保存和加載一個包含 2 個ndarrays的元組列表和一個int

在我當前的實現中,當我保存和加載列表 l 時,恢復的列表中存在一些10^-10 有沒有辦法更精確地保存和恢復值? 我也很感激對我的代碼的評論。 謝謝!

這就是我現在所擁有的:

def save_l(l,path):
    tup=()
    for X in l:
        u=X[0].reshape(784*9)
        v=X[2]*np.ones(1)
        w=np.concatenate((u,X[1],v))
        tup+=(w,)
    L=np.row_stack(tup)
    df=pd.DataFrame(L)
    df.to_csv(path)

def load_l(path):
    df=pd.read_csv(path)
    L=df.values
    l=[]
    for v in L:
        tup=()
        for i in range(784):
            tup+=(v[9*i+1:9*(i+1)+1],)
        T=np.row_stack(tup)
        Q=v[9*784+1:10*784+1]
        i=v[7841]
        l.append((T,Q,i))
    return(l)

您遇到的問題可能是由於在保存和加載過程中缺少 .csv 文件保護。

確保您的文件被鎖定直到所有數據完全保存/加載的好方法是使用上下文管理器 這樣,即使您的系統因任何原因停止執行,您也不會丟失任何數據,因為所有結果都在它們可用的那一刻保存。

我建議使用with -語句,其主要用途是對內部使用的對象(在這種情況下是您的 .csv)進行異常安全的清理。 換句話說, with 確保關閉文件、釋放鎖、恢復上下文等。

with open("myfile.csv", "a") as reference:           # Drop to csv w/ context manager
     df.to_csv(reference, sep = ",", index = False)  # Same goes for read_csv
# As soon as you are here, reference is closed

如果您嘗試此操作但仍然看到您的錯誤,則不是由於保存/加載問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM