Also versuche ich die unglaubliche Pandastable zu verwenden, um JPEG-Exif-Daten aus einer CSV-Datei anzuzeigen. Ich bin der Verarbeitung dieser Dateien mit exifread, es in eine CSV schreiben und dann mit Pandastable auf einem tk.button klicken Sie den folgenden Code zu importieren:PandaTables und Exif - Hinzufügen von Spalten nach Bedarf
def load_file():
fname = askopenfilename(filetypes=(("JPEG/TIFF files", "*.jpg;*.tiff"),
("All files", "*.*")))
f = open(fname,'r')
fdata.update(exifread.process_file(f, details=False))
with open('tempdata.csv', 'a') as f:
w = csv.DictWriter(f, fdata.keys(),extrasaction="raise")
w.writeheader()
w.writerow(fdata)
datatable.importCSV('tempdata.csv')
Mein Problem ist, dass jede Datei variable Datenfelder, so img1 könnte 50 Felder haben, während img2 51 Felder haben könnte. Das gibt den folgenden Fehler aus:
CParserError: Fehler beim Token von Daten. C-Fehler: Erwartete 50 Felder in Zeile 13, sah 51
Also was ich gerne tun würde, ist, dass, wenn img2 zusätzliche Datenfelder hat, fügt sie diese in die Tabelle.
Ich habe versucht, eine Liste aller Datenfelder zuerst in meinem eigenen Wörterbuch zu erstellen, aber aufgrund der Art, wie Exifread funktioniert, scheint dies nicht gut zu funktionieren, da es viele, viele verschiedene Variationen von Tags gibt - I Ich hoffe auch, dies auf andere Dateitypen zu erweitern, die dies schwer zu pflegen machen würden.
Ich möchte diese Spalten auch nicht einfach ignorieren, da die meisten der anderen ähnlichen Fragen als Antwort haben.
Irgendwelche Ideen, wie ich diese Spalten im laufenden Betrieb hinzufügen könnte?
Hallo MatR, danke für die Antwort. Pandastable scheint aus irgendeinem Grund nicht um die Datenrahmen herum zu arbeiten, also werde ich versuchen, dies zu klären. Grundsätzlich jedes Mal, wenn ich eine Datei öffne, verarbeite ich es mit dem Modul exifread, das mir ein dict von Sachen wie {'image_size': '1024x768' ....} Ich möchte dies in eine CSV-Datei schreiben und Zeigen Sie es dann mit dem Pandastable-Modul an. Ich möchte dann eine andere Datei öffnen, sie verarbeiten und sie dem CSV hinzufügen. Wenn img2 mehr Spalten als img1 hat, wird leider der obige Fehler angezeigt. Wenn also Python mehr Spalten in img2 findet, fügt id diese in die CSV ein. – Retro
Sie könnten die Wörterbücher mit ['pandas.DataFrame.from_dict'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_dict.html), Merge/Concat (was auch immer ist der neue Datenrahmen und verwenden Sie die gleiche Logik wie in meiner Antwort. Hilft das überhaupt? Es ist schwer, ein konkretes Beispiel zu finden, ohne zu sehen, was du siehst. – MattR
Danke MattR, deine Vorschläge haben mich genau in die richtige Richtung gelenkt - ich habe es am Ende neu geschrieben und werde meine Antwort so bearbeiten, wie ich es geschafft habe. Danke nochmal! – Retro