Also ich habe den Pfad eines Ordners. Wie kann ich nun die darin liegenden Dateien auslesen und ggf auf deren Infos zugreifen (bei Mp3 den ID Tag, bei doc dateien die beschreibung, etc ..... ).
ist das überhaupt möglich?
PS: gibt es eine seite, wo man schnell die funktionen findet?
also bei php ist es ja so, dass wenn man weiß, was man braucht, schaut man eben auf php.net und findet dort die function die z.b. den algorithmus von einer zal errechnet. gibts da auch was für python?
Habe Pfad eines Ordners. Wie lese ich die Dateien + Info aus
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich habe den Thread verschoben, da die Frage mit wxPython nichts zu tun hatte.
Den inhalt eines Ordners kannst du so auslesen:
Dür Informationen über mp3s gibt es die Zusatzlib ID3-py, DOC-Informationen bekommsts du nicht ohne weiteres, da DOC ein proprietäres Format von Microsoft ist, von dem die Spazifikationen nicht bekannt sind.
Die meiste Dokumentation über Python gibt es auf docs.python.org.
Den inhalt eines Ordners kannst du so auslesen:
Code: Alles auswählen
import os
print os.listdir(r"C:\")
Die meiste Dokumentation über Python gibt es auf docs.python.org.
Zuletzt geändert von Leonidas am Samstag 22. Oktober 2005, 12:43, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bekomme immer einen Fehler:
There's an error in your programm:
EOL while scanning single-quoted string
There's an error in your programm:
EOL while scanning single-quoted string
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Hier noch zwei Links aus diesem Forum zu diesem Thema:
http://www.python-forum.de/viewtopic.ph ... =dateiinfo
http://www.python-forum.de/viewtopic.ph ... =dateiinfo
mfg
Gerold
Hier noch zwei Links aus diesem Forum zu diesem Thema:
http://www.python-forum.de/viewtopic.ph ... =dateiinfo
http://www.python-forum.de/viewtopic.ph ... =dateiinfo
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann nimm diesen Code:
Code: Alles auswählen
import os
print os.listdir("C:\\")
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
hab ein problem, also wenn ich den pfad direkt eingebe, funzt es super.
wenn ich nun aber dieses hier machen
bekomme ich folgende meldung
Edit (Leonidas): Code in Python-Tags gesetzt.
wenn ich nun aber dieses hier machen
Code: Alles auswählen
# -*- coding: cp1252 -*-
from ID3 import *
import os
a = os.listdir("C:\\*****\\******\\******\\******\\******\\")
for x in a:
laenge = len(x)
diff = laenge-4
if x[diff:] == ".mp3":
try:
id3info = ID3('C:\\******\\******\\******\\******\\******\\',x)
print id3info
id3info['TITLE'] = "Green Eggs and Ham"
id3info['ARTIST'] = "Moxy Früvous"
for k, v in id3info.items():
print k, ":", v
except InvalidTagError, message:
print "Invalid ID3 tag:", message
pfad ist zu 100% richtig, weil er mir ein ergebnis liefert, wenn ich statt id3info = ID3('C:\\******\\******\\******\\******\\******\\',x) den direkten pfad zur datei angebe. woran liegt das?Exception exceptions.AttributeError: "ID3 instance has no attribute 'modified'" in <bound method ID3.__del__ of <ID3.ID3 instance at 0x00E73CB0>> ignored
Traceback (most recent call last):
File "C:\******\******\******\******\******\test.py", line 23, in ?
id3info = ID3('C:\\******\\******\\******\\******\\******',x)
File "C:\******\******\******\******\******\ID3.py", line 196, in __init__
self.file = open(file, 'rb')
IOError: [Errno 2] No such file or directory: 'C:\\******\\******\\******\\******\\******\\'
Edit (Leonidas): Code in Python-Tags gesetzt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
So wie ich das sehe, versuchst du einen Ordner zu öffnen, das geht natürlich nicht. Zum "zusammenkleben" von Ordner und Dateinamen verwendest du am besten die Funktionen des Moduls os.path. Versuche auch den gebauten Pfad mit print auszugeben, und dann zu schauen, ob es ihn wirklich gibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fehler gefunden
ich habe den pfad mit der variablen so verbunden "pfad",x! also mit einem ",". wenn ich es so mache "pfad"+x dann geht es!
ich habe den pfad mit der variablen so verbunden "pfad",x! also mit einem ",". wenn ich es so mache "pfad"+x dann geht es!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Trotzdem ist der bevorzugte Weg über os.path.join().Anonymous hat geschrieben:ich habe den pfad mit der variablen so verbunden "pfad",x! also mit einem ",". wenn ich es so mache "pfad"+x dann geht es!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bräuchte nochmal hilfe^^
und zwar habe ich folgenden Code
ich bekomme allerdings immer diesen fehler und verstehe nicht warum.
PS: kann man in dem standard editor, der bei python dabei ist irgendwie die zeilen anzeigenlassen?
Edit (Leonidas): Code in Python-Tags gesetzt.
und zwar habe ich folgenden Code
Code: Alles auswählen
# -*- coding: cp1252 -*-
import wx
from ID3 import *
import os
#Variablen
ID_EXIT = 101
ID_OPEN_DIR = 102
class MainWindow(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,wx.ID_ANY, title, size = ( 800,600),
style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
#Statisches Fenster anlegen
self.feld = wx.StaticText(self,1,style=wx.TE_MULTILINE)
#Textfeld anlegen (dort werden die Aktionen eingefügt/angezeigt)
self.fenster = wx.TextCtrl(self,5,"",wx.point(492,0),wx.Size(300,300),wx.TE_MULTILINE | wx.TE_READONLY)
#Statusbar anlegen
self.CreateStatusBar()
#"Datei"-Menu
filemenu = wx.Menu()
filemenu.Append(ID_OPEN_DIR,"&Öffnen","Ordner öffnen")
filemenu.AppendSeperator()
filemenu.Append(ID_EXIT,"&schließen","Programm schließen")
#Menübar anlegen
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&Datei")
self.SetMenuBar(menuBar)
#Event = schließen
wx.EVT_MENU(self,ID_EXIT,self.OnExit)
#Event = Ordner öffnen
wx.EVT_MENU(self,ID_OPEN_DIR,self.OpenDir)
#Alles anzeigen
self.Show(True)
def OnExit(self,e):
self.Close(True)
def OpenDir(self,e):
#"Ordner aussuchen"-Menu
dlg = wx.DirDialog(self, "Wähle ein Verzeichniss:",
style=wx.DD_DEFAULT_STYLE|wx.DD_NEW_DIR_BUTTON)
#Wenn der OK Button geklickt wurde
if dlg.ShowModal() == wx.ID_OK:
#gewählter Pfad
directory = dl.GetPath()
#Dateien aus Ordner auslesen
arr = os.listdir(directory)
self.fenster.AppendText(arr)
#Ausgabe
app = wx.PySimpleApp()
frame = MainWindow(None, -1, "MP3 Directory")
app.MainLoop()
habe mich eigentlich an tutorials gehalten und dort ist es eigentlich genauso mit dem wx.AppTraceback (most recent call last):
File "C:/Mein/Pfade/ordner auslesen.py", line 60, in ?
frame = MainWindow(None, -1, "MP3 Directory")
File "C:/Mein/Pfadeordner auslesen.py", line 13, in __init__
style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
File "C:\Programme\Python24\Lib\site-packages\wx-2.6-msw-ansi\wx\_windows.py", line 484, in __init__
newobj = _windows_.new_Frame(*args, **kwargs)
PyNoAppError: The wx.App object must be created first!
PS: kann man in dem standard editor, der bei python dabei ist irgendwie die zeilen anzeigenlassen?
Edit (Leonidas): Code in Python-Tags gesetzt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Keine Ahnung. Die Empfehlung die du hier am öftesten hörst lautet: einen anderen Editor benutzen, da es mit IDLE ofters mal Hakeleien gibt.jazzdee! hat geschrieben:PS: kann man in dem standard editor, der bei python dabei ist irgendwie die zeilen anzeigenlassen?
Dein Code hat bei mir eine andere Fehlermeldung gebracht, so was wx.point nicht definiert, weil es stattdessen wx:point heißt und AppendSeperator ist eigentlich AppendSeparator. Bei der Gelegenheit habe ich die ersten zwei Zeilen geändert: Shebang hinzugefügt, Encoding geändert, ID3 auskommentiert (habe ich nicht installiert) und statt festvercodeter IDs welche von wx generieren lassen.
Der funktioniert nun bei mir:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: latin-1 -*-
import wx
#from ID3 import *
import os
#Variablen
ID_EXIT = wx.NewId()
ID_OPEN_DIR = wx.NewId()
class MainWindow(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,wx.ID_ANY, title, size = ( 800,600),
style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
#Statisches Fenster anlegen
self.feld = wx.StaticText(self,1,style=wx.TE_MULTILINE)
#Textfeld anlegen (dort werden die Aktionen eingefügt/angezeigt)
self.fenster = wx.TextCtrl(self,5,"",wx.Point(492,0),wx.Size(300,300),wx.TE_MULTILINE | wx.TE_READONLY)
#Statusbar anlegen
self.CreateStatusBar()
#"Datei"-Menu
filemenu = wx.Menu()
filemenu.Append(ID_OPEN_DIR,"&Öffnen","Ordner öffnen")
filemenu.AppendSeparator()
filemenu.Append(ID_EXIT,"&Schließen","Programm schließen")
#Menübar anlegen
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&Datei")
self.SetMenuBar(menuBar)
#Event = schließen
wx.EVT_MENU(self,ID_EXIT,self.OnExit)
#Event = Ordner öffnen
wx.EVT_MENU(self,ID_OPEN_DIR,self.OpenDir)
#Alles anzeigen
self.Show(True)
def OnExit(self,e):
self.Close(True)
def OpenDir(self,e):
#"Ordner aussuchen"-Menu
dlg = wx.DirDialog(self, "Wähle ein Verzeichniss:",
style=wx.DD_DEFAULT_STYLE|wx.DD_NEW_DIR_BUTTON)
#Wenn der OK Button geklickt wurde
if dlg.ShowModal() == wx.ID_OK:
#gewählter Pfad
directory = dl.GetPath()
#Dateien aus Ordner auslesen
arr = os.listdir(directory)
self.fenster.AppendText(arr)
#Ausgabe
app = wx.PySimpleApp()
frame = MainWindow(None, -1, "MP3 Directory")
app.MainLoop()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
ja, soweit habe ich ihn nicht getestet Gestartet: läuft. Ok!jazzdee! hat geschrieben:wie funzt denn der bei dir?
hast unten nen rechtschreibfehler drin
directory = dl.GetPath() muss directory = dlg.GetPath() heißen aber nun funzt es bei mir auch.
SciTE, siehe SciTEIntegration.jazzdee! hat geschrieben:zum editor:
kannst du mir da einen empfehlen?
Oder du nutzt (g)Vim, aber den mögen nicht alle, da er doch ein wenig gewöhnungsbedürftig ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice