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
Neuer File Browser, Icons nach Dateiinhalt oder Endeung
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]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
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
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]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
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
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
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.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.
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?).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.
lG
Daniel
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Mit Mount-Optionen wie relatime oder noatime hält sich das in Grenzen.Barabbas hat geschrieben:unter Linux etwa würde man doch sonst andauernd atime neu setzen (oder irre ich mich da?).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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<<<<<<<<<<<<
Gruß
Andyh
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<<<<<<<<<<<<
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]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
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
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]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]