2 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
要回答您的第一個(gè)問題,我認(rèn)為最好使用的格式是一種廣泛使用的標(biāo)準(zhǔn),如 JSON、XML 或 CSV,用于將數(shù)據(jù)存儲(chǔ)到文件中。
首先,這將意味著您自己實(shí)現(xiàn)的邏輯更少——所有序列化和反序列化都可以通過 python 中廣泛可用的標(biāo)準(zhǔn)庫來完成。其次,大多數(shù)編程語言中都存在用于解析這些文件的庫,因此如果您發(fā)現(xiàn)自己必須將這些數(shù)據(jù)提取到另一個(gè)應(yīng)用程序中,您將永遠(yuǎn)不會(huì)發(fā)現(xiàn)自己必須重新實(shí)現(xiàn)該邏輯。最后,由于這些庫的使用如此廣泛,它們經(jīng)過了大量優(yōu)化,因此不太可能給您帶來任何性能問題。
我自己會(huì)推薦 JSON,因?yàn)?python 庫使它的使用變得如此簡單。以下是在 python 中從文件寫入和讀取 JSON 的示例:
import json
A = 2
B = 34
C = "foo"
# Write to file
obj = {
'A': A
'B': B
'C': C
}
with open("filename.txt", "w") as f:
json.dump(obj, f)
# Read from file
with open("filename.txt", "r") as f:
obj2 = json.load(f)
A = obj2['A']
B = obj2['B']
C = obj2['C']

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
你是對的。這確實(shí)是糟糕的設(shè)計(jì)(因?yàn)樗c操作系統(tǒng)無關(guān))。
import os
dir = os.path.join('foo', 'bar')
print(dir) # prints the proper dir format in Windows, OSX, Linux
此外,您編寫文件的方式很好,但它不會(huì)關(guān)閉文件以防在f.close(). 因此,您應(yīng)該使用以下內(nèi)容:
with open(dir, 'r') as f:
data = f.read()
with 語句是一個(gè)塊執(zhí)行上下文管理器,無論在其范圍內(nèi)發(fā)生什么,它都會(huì)關(guān)閉文件。有時(shí),使用 simplef.open是必要的,但這通常包含在 try/except 中。
添加回答
舉報(bào)