2017-08-23 1 views
0

Im Versuch, ein Programm auf, wo es etwas eingegeben ist einzurichten wird die Festplatte (c: \) dafür in Windows suchen. Ich habe den folgenden Code eingegeben, aber es nimmt den vollständigen Pfad in der Lookfor-Variable. Ich versuche herauszufinden, wie ich es einrichten kann, wenn ich ein paar Buchstaben habe, die passen, um auf ihnen zu stoppen. Zum Beispiel, wenn ich Curr in die Variable lookfor setze, würde ich gerne Current1.png finden, aber stattdessen muss ich die Elemente voller Länge (Current1.png) eingeben, um sie zu finden.Suche nach Elementen auf der Festplatte mit einem Satz.

import os 
from os.path import join 

lookfor = 'Current1.png' 
for root, dirs, files in os.walk('c:\\'): 
#print ('Searching', root) 
if lookfor in files: 
    print ('Found: %s' %join(root, lookfor)) 
    break 

Antwort

0

Das Problem ist, dass os.walk() eine Liste von Dateien zurückgibt und Sie nach einer Zeichenfolge innerhalb dieser Liste der Dateien

files = ['Current1.jpg', 'Current2.jpg', 'Current3.jpg'] 

Wenn Sie diese Liste suchen Suche nach ‚akt‘ wird es nicht sein,

>>> 'Curr' in files 
False 
>>> any(['Curr' in file for file in files]) 
True 

Versuchen, den Code zu

import os 
from os.path import join 

lookfor = 'Curr' 
for root, dirs, files in os.walk('c:\\'): 
    if any([lookfor in file for file in files]): 
     print ('Found: %s' %join(root, lookfor)) 
     break 
ändern Treffer
+1

Wenn ich etwas nicht vermisse (es war ein langer Tag), ist '[Datei für Datei in Dateien]' nur eine Kopie von 'Dateien'. Ich glaube, du meintest 'any ([in Datei für Datei in Dateien suchen)]' oder möglicherweise '[Datei für Datei in Dateien, wenn in Datei suchen]'. –

+0

AK, die es dorthin gebracht haben, aber jetzt hat es etwas gefunden, wonach ich gesucht habe. Gibt es eine Möglichkeit, es einzurichten, bis ich den Ort finde, nach dem ich suche. – Zander

+0

Sie können Ihr Listenverständnis in eine reguläre for-Schleife ändern und dann etwas wie für Datei in Dateien tun: wenn in Datei suchen: print ('% s% gefunden:% join (root, file); break – AK47

Verwandte Themen