Mit dieser if-Bedingeung
Code: Alles auswählen
if os.path.exists(os.path.join(path, seek_file)):
seek_file = '*.ts'
alle ts-Dateien gefunden werden?
Code: Alles auswählen
if os.path.exists(os.path.join(path, seek_file)):
Code: Alles auswählen
base_dir = {str} 'I:\\'
files = {list} ['$IO68QWS.png', '$IXE72K1.jpg', '$RO68QWS.png', '$RXE72K1.jpg', 'desktop.ini']
path = {str} 'I:\\$RECYCLE.BIN\\S-1-5-21-2977881455-1379343495-2050248448-1004'
seek_file = {str} '*.jpg'
spec = {bool} True
subdirs = {list} []
Code: Alles auswählen
import fnmatch
def ifilter_files(base_dir, seek_file, spec=False):
for path, subdirs, files in os.walk(base_dir):
if spec:
for file in files:
if fnmatch.fnmatch(file, seek_file):
yield path
else:
if os.path.exists(os.path.join(path, seek_file)):
yield path
Die Implementierung von os.walk ist in Python 3.5 geändert worden und läuft nun schneller.kodela hat geschrieben:Etwas möchte ich noch erwähnen. Ich habe diesen Code unter den Versionen 2.7.11 und 3.5 getestet. Dabei stellte ich fest, dass das Skript unter der Version 3.5 um den Faktor 5 schneller ausgeführt wurde (15 Sek. mit 2.7.11 und 3 Sek. mit 3.5). Wie erklärt sich das?
Code: Alles auswählen
#!/usr/bin/env python35
# coding=utf-8
import os
import fnmatch
def ifilter_files(base_dir, seek_file):
for path, subdirs, files in os.walk(base_dir):
for datei in files:
if fnmatch.fnmatch(datei, seek_file):
yield path + '\\' + datei
def main():
base_dir = 'D:\\'
seek_file = 'vlc.exe'
dir_name = ''
gefunden = False
for dir_name in ifilter_files(base_dir, seek_file):
if not gefunden:
print("Anzeige aller Fundstellen für die Datei %s:" % seek_file)
print(dir_name)
gefunden = True
if not gefunden:
print("Eine Datei \'%s\' wurde nicht gefunden!" % seek_file)
if __name__ == "__main__":
main()