2017-07-18 106 views
-3

我在.txt文件中有一個數組。我想要做的就是在Python中的文件中讀取和寫入數組

  1. 讀了這陣
  2. 的長度追加數組
a=[('a'),('b'),('c')] 
f=open("file.txt","w+") 
f.append(a[0]) 

我不能找到一種方法,用我的txt文件,就好像一個數組。有沒有可能做到這一點?

+0

您能否提供包含預期結果的[mcve]? – MSeifert

+0

你可以使用json而不是普通的文本文件。 –

+0

爲什麼要嘗試附加到文件對象的任何特定原因?是的,如果你不介意丟失你的元組,我會推薦json。 –

回答

0

這是你可以做的,如果你不想使用jsonpickle

第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以回寫您的文件。

0

如果你想要寫的東西到文件的末尾,你需要下面的代碼:

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隨後將包含項目的列表附加到該文件,這確實不能包含換行符。

0

閱讀文件作爲一個字符串

myString = f.read() 

斯普利特在給定字符的字符串,並將其存儲爲一個數組(技術上的列表)。您沒有提供關於文件格式的詳細信息,因此我會假定它是用逗號劃定的。

a = myString.split(',') 

一個更快的方式做,這是

a = f.read().split(',') 

爲了得到長

len(a) 

要追加

a.append("thing") 

要附加到你要打開的文件它處於追加模式。這由open方法中的第二個參數表示

f = open(filename, 'a') 
f.write(",thing") 
+0

但是這種方法實際上並沒有將文件追加到文件中,這是OP後面的內容...... –

+0

OP的指示對我來說還不清楚。我編輯了我的答案,包括附加到文本文件。 – Simon