2016-04-04 8 views
0

Ich versuche zu:beim Lesen von Datei, auf Listen anhängt

  1. aus einer Datei lesen
  2. anhängen jede Zeichenfolge in eine Liste (aus der Datei, Separator ‚‘)
  3. Iterate durch die Liste und bestimmte Elemente zu zwei weitere Listen anhängen

end_server_alias = [] 
end_server_ip = [] 
types = [] 
if sys.argv[1] == '-e': 
    with(open(sys.argv[2], "r")) as f: 
     types.append(line.rstrip().split(",") for line in f) 
     k = 0 
     while k < len(types): 
      print(types[k]) 
      if types[2*k] is not None: 
       print(1) 
       end_server_ip.append(types[2*k]) 
      if types[2*k+1] is not None: 
       print(2) 
       end_server_alias.append(types[2*k+1]) 
      k += 1 
    f.close() 

Die TXT-Datei i aus lese ist wie folgt:

168.1.2.6,www.random1.com 

133.1.3.4,www.random2.com 

Der Index außerhalb der Grenzen ist das, was ich bekommen, aber ich bin auch nicht sicher, ob das, was in Typen enthaltenen String-Typ ist.

Antwort

0

Es gibt ein paar Probleme mit Ihrem Parser und ich bin mir nicht sicher, was Sie erreichen wollen (in Bezug auf den Inhalt der Datei testen). In jedem Fall können Sie die Datei in eine Liste lesen, indem Sie die folgende Transformation des Codes verwenden:

types,end_server_ip,end_server_alias = [],[],[] 
with(open('in.txt', "r")) as f: 
    types = [line.rstrip().split(",") for line in f] # Put List syntax to do list compreehension 
    k = 0 
    while k < len(types): 
     print(types[k]) 
     if types[k][0] is not None: # acess types as index for row, and index for column 
      if type(types[k][0]) == type('string'): 
       print('Its a String!!!') 
      print(1) 
      end_server_ip.append(types[k][0]) 
     if types[k][1] is not None: 
      print(2) 
      if type(types[k][1]) == type('string'): 
       print('Its a String!!!') 
      end_server_alias.append(types[k][1]) 
     k += 1 
f.close() 

, merke ich, wie Sie types definieren geändert haben, so, wie Sie types elements zugreifen, und fügte eine Frage sehen Sie, ob ein element is a string.

Beachten Sie, dass die Liste Zeilen und Spalten entspricht, sodass Sie für den Zugriff auf ein Element auf Zeilen und Spalten indexieren müssen. Auch die Frage, ob ein Element None ist, ist für mich etwas seltsam, was ich aus deinem Code ersehen kann. Wenn Sie die Anweisung zum Erstellen von Typen verwenden, werden immer Zeichenfolgen erstellt. Wenn Sie Zahlen benötigen, müssen Sie diese selbst konvertieren. Siehe Anweisungen wie int und float.

+0

Danke, ich sehe, dass ich missverstanden habe, wie es in Python funktioniert. – GKoo