Suche soll nicht case-sensitive sein
Verfasst: Freitag 15. April 2005, 14:16
Da bin ich schon wieder
Diesmal mit einer Frage zu einer Suchfunktion. Und zwar benutze ich zu diesem Zweck re.match. Das entsprechende __doc__ ist nicht besonders aufschlussreich - woher bekomme ich denn noch informationen zur verwendung eines Moduls (wenn nicht aus diesem Forum ) ??
Ich poste mal eben das komplette Script:
Es geht um def search(): funktioniert eigentlich 1a, ist aber case-sensitive Wie kann ich das ändern?? Und woher weiß ich, daß ich als wildcards .* und nicht einfach * benutzen soll? (ich weiß es von mawe, aber woher weiß der das???)
Wiedereinmal Fragen über Fragen
Ach ja, eine hab ich noch: ab wann werden csv eigentlich zu lang, oder besser, ab welcher größe schaut man sich besser nach einer alternativen Datenspeichermethode um??
thx
Diesmal mit einer Frage zu einer Suchfunktion. Und zwar benutze ich zu diesem Zweck re.match. Das entsprechende __doc__ ist nicht besonders aufschlussreich - woher bekomme ich denn noch informationen zur verwendung eines Moduls (wenn nicht aus diesem Forum ) ??
Ich poste mal eben das komplette Script:
Code: Alles auswählen
#!/usr/bin/python
# -*- encoding: latin-1 -*-
import os, re
def archive():
cd_drive = raw_input("CD-Laufwerk: ")
cd_name = raw_input("Name der CD: ")
data = file("cd_database.txt","a")
backup = file("%s.txt" % cd_name, "a")
for paths, dirs, files in os.walk(cd_drive):
for fil in files:
data.write("%s ||%s ||%s || \n" % (fil, cd_name, paths))
backup.write("%s ||%s ||%s || \n" % (file, cd_name, paths))
data.close()
backup.close()
print "Archivierung von %s abgeschlossen!" % cd_name
start()
def search(files, cd_names, paths):
searchstring = raw_input("Suchbegriff (z.B. .*suchbegriff.*): ")
pattern = re.compile(searchstring)
file_oder_dir = input("""\n 1: Suche Datei \n 2: Suche Verzeichnis \n\n Auswahl: """)
if file_oder_dir == 1:
for i, element in enumerate(files):
if pattern.match(element):
print "%s %s %s" % (cd_names[i], files[i], paths[i])
elif file_oder_dir == 2:
tempdirs = []
temp_cds = []
for i, element in enumerate(paths):
if pattern.match(element):
if not element in tempdirs:
tempdirs.append(element)
temp_cds.append(cd_names[i])
for a, dirs in enumerate(tempdirs):
print "%s %s" % (temp_cds[a], dirs)
frage = input("""\n 1: neue Suche \n 2: Hauptmenü \n 3: beenden \n\n Auswahl: """)
if frage == 1:
search(files, cd_names, paths)
elif frage == 2:
start()
elif frage == 3:
print ""
print "beende Programm... Selbstzerstörung aktiviert..."
print ""
else:
print ""
print "1, 2 oder 3 !"
print "------"
start()
def search_archive():
data = open("cd_database.txt", "r")
files = []
cd_names = []
paths =[]
for line in data.readlines():
file, cd_name, path, eol = line.split('||')
files.append(file)
cd_names.append(cd_name)
paths.append(path)
data.close()
search(files, cd_names, paths)
def start():
auswahl = input("""\n 1: Neue CD archivieren \n 2: Archiv durchsuchen \n 3: Beenden \n\n Auswahl: """)
if auswahl == 1:
archive()
elif auswahl == 2:
search_archive()
elif auswahl == 3:
print ""
print "beende Programm... Selbstzerstörung aktiviert..."
print ""
else:
print ""
print "1, 2 oder 3 !"
print "------"
start()
if __name__== '__main__':
start()
Wiedereinmal Fragen über Fragen
Ach ja, eine hab ich noch: ab wann werden csv eigentlich zu lang, oder besser, ab welcher größe schaut man sich besser nach einer alternativen Datenspeichermethode um??
thx