2017-03-02 8 views
-2

Ich habe zwei Programme in Python. Man schreibt die Informationen eines Kunden in eine CSV-Datei. Der andere greift darauf zu. Wenn der erste es geschrieben hat, kann ich die CSV-Datei (in Excel) öffnen und sehen, dass sie korrekt geschrieben wurde. Damit das andere Programm auf die neuen Daten in der CSV-Datei zugreifen kann, muss ich es manuell öffnen und speichern (in Excel), sonst funktioniert es nicht. Weiß jemand, warum das sein könnte?Schreiben in CSV und Speichern der Datei

Edit:

Dies schreibt sie (aus dem ersten Programm):

f = open('details.csv', 'at', newline=''); csv_f = csv.reader(f) 
csv_w.writerow(clientList) 
f.close() 

Und das liest es (zweites Programm):

f = open('details.csv', 'rt', newline=''); csv_f = csv.reader(f) 
for row in csv_f: 
    name.append(row[0]) 

ich diesen Fehler, wenn sie versuchen zu Hängen Sie Zeile [0] an eine Liste an.

Traceback (most recent call last): 
    File "C:\Users\Dan\Desktop\Garden Centre\work.py", line 8, in <module> 
    name.append(row[0]) 
IndexError: list index out of range 
+2

Wenn Sie uns Ihren Code zeigen, könnte es hilfreich sein, Ihnen zu helfen. :) – sangheestyle

Antwort

0

Ich habe eine Reihe solcher Probleme gesehen, die von verschiedenen Plattformlinienendungen herrühren. Unter Python 2, können Sie versuchen, den „Universal-Zeilenende“ Datei-Lesemodus:

with open('data.csv', 'rU') as f: 
    for row in csv.reader(f): 
     print row 

Da Excel verwenden ist oft den alten Mac (\r) und Windows (\r\n) Standards, die auf die Weise des csv Modul bekommen , besonders auf einer Unix- oder Mac-Plattform, wo Python die Unix-Standard-Zeilenendung erwartet (\n). Python 3 ist in der Regel etwas schlauer (und andere Probleme bei der Codierung von Dateien/Strings), so dass im Allgemeinen kein spezieller Modus benötigt wird.

+0

Ich habe versucht, was Sie vorgeschlagen, aber ich war bereits auf Python 3, also bin ich mir nicht sicher, es machte einen Unterschied, wie ich immer noch in den gleichen Fehler läuft. –

+0

In Python 3, IME, werden Sie keinen großen Unterschied zum U-Modus sehen. Sie werden wahrscheinlich sogar eine Verwarnungswarnung erhalten. Aber was ist das 'newline =' ''Parameter? Das sieht sehr wahrscheinlich aus, dass es dir in den Weg kommt. –

0

Ich fand eine Antwort nach Stunden des Versuchs. In Excel enthält jedes Element in einer "leeren" Zeile "" für die größte Anzahl von Elementen in einer Zeile. Python schreibt es nicht so in die CSV und stattdessen enthält nur ein Element in einer leeren Zeile None. Bei der Iteration durch jede Zeile gab es kein erstes Element, das der Liste in den leeren Zeilen hinzugefügt werden konnte. Ich musste manuell ein Extra '' zu der Liste hinzufügen, die vom ersten Programm geschrieben wurde.

Verwandte Themen