我在.txt文件中有一個數組。我想要做的就是在Python中的文件中讀取和寫入數組
- 讀了這陣
- 的長度追加數組
a=[('a'),('b'),('c')]
f=open("file.txt","w+")
f.append(a[0])
我不能找到一種方法,用我的txt文件,就好像一個數組。有沒有可能做到這一點?
我在.txt文件中有一個數組。我想要做的就是在Python中的文件中讀取和寫入數組
a=[('a'),('b'),('c')]
f=open("file.txt","w+")
f.append(a[0])
我不能找到一種方法,用我的txt文件,就好像一個數組。有沒有可能做到這一點?
這是你可以做的,如果你不想使用json
或pickle
。
第1步:寫入文件
import ast
items = ['foo', 'bar']
with open('ds.txt', 'w') as f:
f.write(str(items))
第2步:閱讀和追加新項目
new_items = [('a'), ('b'), ('c')]
with open('ds.txt', 'r') as f:
f_items = ast.literal_eval(f.read())
print(f_items)
# ['foo', 'bar']
f_items = f_items + [x[0] for x in new_items]
print(f_items)
# ['foo', 'bar', 'a', 'b', 'c']
你現在可以使用ast.literal_eval
對象轉儲對象作爲文本項並加載它們,您可以重複步驟1以回寫您的文件。
如果你想要寫的東西到文件的末尾,你需要下面的代碼:
with open("file.txt","a") as f:
f.write("insert text here")
一般來說,with open("file.txt","a") as f:
語法是適合作爲一個無需手動關閉f
。
然後,您可以編寫附加在這樣一個新的每一項目:
def fileappend(filename,string):
with open(filename,"a") as f:
f.write(string)
這將允許你這樣提取的字符串:
with open("file.txt","r") as f:
l=[x[:-1] for x in f.readlines()]
l
隨後將包含項目的列表附加到該文件,這確實不能包含換行符。
閱讀文件作爲一個字符串
myString = f.read()
斯普利特在給定字符的字符串,並將其存儲爲一個數組(技術上的列表)。您沒有提供關於文件格式的詳細信息,因此我會假定它是用逗號劃定的。
a = myString.split(',')
一個更快的方式做,這是
a = f.read().split(',')
爲了得到長
len(a)
要追加
a.append("thing")
要附加到你要打開的文件它處於追加模式。這由open
方法中的第二個參數表示
f = open(filename, 'a')
f.write(",thing")
但是這種方法實際上並沒有將文件追加到文件中,這是OP後面的內容...... –
OP的指示對我來說還不清楚。我編輯了我的答案,包括附加到文本文件。 – Simon
您能否提供包含預期結果的[mcve]? – MSeifert
你可以使用json而不是普通的文本文件。 –
爲什麼要嘗試附加到文件對象的任何特定原因?是的,如果你不介意丟失你的元組,我會推薦json。 –