Neuer File Browser, Icons nach Dateiinhalt oder Endeung

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Wie schon in einem andern thread erwähnt schreibe ich gerade einen File Browser.

Jetzt wo schon vieles geht stellt sich eine performance Frage:
soll ich die Icons der Dateien anhand der Dateiendung oder des Dateiinhaltes zuordnen?

klar ist die erkennung am inhalt einer Datei die bessere Lösung, diese braucht aber Zeit ungafähr 10x so viel.

für was würdet ihr euch entscheiden?

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

anahnd des mimetypes
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ist zwar nicht die antwort auf meine Frage, aber trotzdem danke für die antwort!

Das modul ist der letzte müll wie ich gestern festellen musste es gibt anhand der Dateiendung den mimetype aus, alos nicht von inhalt durchlesen und so.
am einfachsten geht das mit den Programm "file".

Nur soll ich das überhaut machen, oder reicht es wenn ich nur die Dateiendung nehme?

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Ich habe gerade mal probeweise unter Gnome eine Datei angelegt und mit verschiedenen Endungen versehen. Zumindest da ist es so, dass das Icon an Hand der Endung bestimmt wird. Und wenn ich mich recht erinnere, macht es Windows ebenso.
Da die andere Methode enorme Geschwindigkeitseinbußen mit sich bringt, würde ich Icons immer an Hand der Endung bestimmen. Wenn eine Endung nicht bekannt oder vorhanden ist, würde ich text vs binär unterscheiden und entsprechende Icons einbinden.

Als ich damals unter Windows VisualBasic programmiert habe, gab es aber auch eine API, mit der ich mir zu einer bestimmten Datei die damit assoziierte Anwendung zeigen lassen konnte. Das habe ich damals für meine Zwecke genutzt. Das wäre für dich sicher auch sinnvoll - immerhin geht es ja eigentlich nicht darum, das Rad neu zu erfinden, sondern das Verhalten deines Programmes so abzustimmen, dass es in die jeweilige Desktopumgebung passt.

Daniel
lunar

Barabbas hat geschrieben:Ich habe gerade mal probeweise unter Gnome eine Datei angelegt und mit verschiedenen Endungen versehen. Zumindest da ist es so, dass das Icon an Hand der Endung bestimmt wird.
Es gibt auch Dateitypen, die Gnome anhand ihrer Endung identifiziert. Ein Beispiel dafür sind Desktop-Entry-Dateien. KDE erkennt diverse Typen auch ohne Endung (z.B. Bilddateien und PDF-Dokumente), ich wette das Gnome das auch tut. Nur funktioniert das eben nicht für eine Textdatei mit generischem Inhalt ohne klare Merkmale.

Im Übrigen ist die Erkennung anhand des Dateiinhalts keineswegs langsam, wenn sie korrekt implementiert ist. Die meisten Dateitypen erkennt man anhand charakteristischer Header, die sich in den ersten paar Bytes der Datei befinden. Dafür wird unter Unix-Derivaten meist die libmagic verwendet, die sich mittels ctypes auch für Python verwenden lässt.
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

lunar hat geschrieben:
Barabbas hat geschrieben: Im Übrigen ist die Erkennung anhand des Dateiinhalts keineswegs langsam, wenn sie korrekt implementiert ist. Die meisten Dateitypen erkennt man anhand charakteristischer Header, die sich in den ersten paar Bytes der Datei befinden. Dafür wird unter Unix-Derivaten meist die libmagic verwendet, die sich mittels ctypes auch für Python verwenden lässt.
Ja klar. ich finde es sinnvoll, Dateitypen nach Möglichkeit nach der Endung zu bestimmen und bei Dateien, die nicht zuzuordnen sind und/oder keine Endung haben, den Inhalt zu Rate zu ziehen. Natürlich muss man nicht die ganze Datei einlesen, darum geht es auch gar nicht: Aber wenn man Dateizugriffe vermeiden kann, sollte man es m.E. auch tun - unter Linux etwa würde man doch sonst andauernd atime neu setzen (oder irre ich mich da?).

lG

Daniel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Barabbas hat geschrieben:unter Linux etwa würde man doch sonst andauernd atime neu setzen (oder irre ich mich da?).
Mit Mount-Optionen wie relatime oder noatime hält sich das in Grenzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich habe das Geschwindigkeitsproblem gelöst.
Es wird jetzt erst nach den Dateiendungen geschaut, da wird nur zwischen Bild und Text unterschieden, das dauert in meinem Testordner 0,3sek(bei 800 Dateien), dann werden die dateien genauer angeschaut, das dauert dann so 20sek(bei 800 Dateien) zeitgleich werden die Vorschaubilder für die Bilder erstellt, das dauer dann 60sek(bei 788 Bilder).

Müsste ja akzeptabel sein?

Jetzt noch was für die Augen:

>>>>>>>>>>>BILD<<<<<<<<<<<<

Bild

>>>>>>>>>>>BILD<<<<<<<<<<<<

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Fein, fein. Darf man fragen, wonach Dir der Sinn im Neuerfinden des Dateibrowserrades mit einer Skriptsprache steht?

Du hast übrigens eine Flaschenverlinkung auf Deiner Homepage :shock:
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

ganz einfach:
1. Wenn mir was nicht passt mach ich es selber!
2. Will ich mal ganz neue und unkonventionelle Wege begehen
3. So viele gute gibt es ja auch nicht Nautilus finde ich da noch mit abstand den besten.
Es soll jetzt aber nicht eine Diskussion über File Browser entstehen!

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Antworten