2017-07-18 7 views
-3

Ich habe ein Array in einer TXT-Datei. Was ich tun möchte, istEin Array in einer Datei in Python lesen und schreiben

  1. die Länge dieses Arrays Lese
  2. Anfügen dieses Array
a=[('a'),('b'),('c')] 
f=open("file.txt","w+") 
f.append(a[0]) 

ich keinen Weg finden konnte meine txt-Datei, als ob ein Array zu verwenden, . Gibt es eine Möglichkeit, das zu tun?

+0

Könnten Sie ein [MCVE] einschließlich dem erwarteten Ergebnis liefern? – MSeifert

+0

Sie könnten Json anstelle einer normalen Textdatei verwenden. –

+0

Gibt es einen besonderen Grund, warum Sie versuchen, ein Dateiobjekt anzufügen? Und ja, ich würde json empfehlen, wenn es Ihnen nichts ausmacht, Ihre Tupel zu verlieren. –

Antwort

0

Dies können Sie tun, wenn Sie json oder pickle nicht verwenden möchten. Sie können Ihre Objekte als Textelemente entleeren und sie laden als Objekte ast.literal_eval mit: Jetzt Lesen und Anhängen neue Objekte

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'] 

:

Schritt 1: Schreiben in eine Datei

import ast 

items = ['foo', 'bar'] 
with open('ds.txt', 'w') as f: 
    f.write(str(items)) 

Schritt 2 , können Sie Schritt 1 wiederholen, um in Ihre Datei zurück zu schreiben.

0

Wenn Sie die Dinge auf das Ende der Datei schreiben möchten, müssen Sie den folgenden Code ein:

with open("file.txt","a") as f: 
    f.write("insert text here") 

Im Allgemeinen ist die with open("file.txt","a") as f: Syntax ist vorzuziehen, da braucht man nicht manuell schließen f.

Sie könnten dann jedes Element auf einer neuen Zeile so beigefügten schreiben:

def fileappend(filename,string): 
    with open(filename,"a") as f: 
     f.write(string) 

Dies würde ermöglichen es Ihnen, die Saiten so zu extrahieren:

with open("file.txt","r") as f: 
    l=[x[:-1] for x in f.readlines()] 

l würde dann eine Liste der Elemente enthalten an die Datei angehängt, die freilich keine Zeilenumbrüche enthalten könnte.

0

die Datei als eine Zeichenfolge Lesen

myString = f.read() 

Split den String auf einem bestimmten Zeichen und speichert es als ein Array (technisch eine Liste). Sie haben keine Angaben zum Format Ihrer Datei gemacht, daher nehme ich an, dass es sich um ein Komma handelt.

a = myString.split(',') 

Ein schneller Weg, dies zu tun, ist

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

Um die Länge

len(a) 

anhängen

a.append("thing") 

anhängen auf die Datei, die Sie öffnen müssen, um zu bekommen es im Append-Modus.Dies wird durch das zweite Argument in der open Methode bezeichnet

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

Aber diese Methode hängt das Ding nicht wirklich an die Datei an, was das OP war nach ... –

+0

Die Anweisungen des OP waren mir unklar. Ich habe meine Antwort so bearbeitet, dass sie sich an die Textdatei anfügt. – Simon

Verwandte Themen