Ich bin ein Python Anfänger und auf der Suche nach etwas Hilfe beim Durchsuchen einer Liste von Verzeichnissen mit os.walk.Python - Os.walk Schleife durch Liste der Verzeichnisse in verschiedenen Laufwerken
Die Idee ist, dass ich eine Liste von Verzeichnissen aus einer SQL-Datenbank ziehen, diese Verzeichnisse werden wahrscheinlich unterschiedliche Laufwerkbuchstaben oder sogar einen UNC-Pfad haben. Was ich tun muss, ist durch diese Verzeichnisse zu suchen, um eine Datei mit einem bestimmten Namen zu finden und zu löschen. Da sich die Datei in einem der Verzeichnisse befinden kann, muss sie alle durchsucht werden. Die Liste der Verzeichnisse ist unbestimmt, so dass ich dachte, sie in einer Liste zu speichern und os.walk alle Verzeichnisse in dieser Liste anzeigen zu lassen.
def get_location():
c.execute('SELECT ADDRESS FROM DIRECTORY')
data = c.fetchall()
SQLlist = [row for row in data]
return SQLlist
addresslist = get_location()
def FileDeleter():
for root, dirs, files in chain.from_iterable(os.walk(addresslist[0:], topdown=False) for path in (str(addresslist[0:]))):
for file in files:
if correctID in file:
if file.endswith('.custextn'):
os.remove(os.path.join(root, file))
Dies ist, wie der Code zur Zeit steht, aber bisher habe ich versucht:
for root, dirs, files in os.walk(addresslist[0:], topdown=False):
for root, dirs, files in chain.from_iterable(os.walk(addresslist[0:], topdown=False)):
Es scheint, dass os.walk zu sein nicht Listen akzeptieren (/ Tupel). Wenn ich Adressliste [0] oder Adressliste [1] setze, funktioniert es tatsächlich, aber da ich nicht weiß, wie viele Adressen es möglicherweise gibt, kann ich leider nicht einfach X Adressen als separate Variablen speichern und die Funktion duplizieren.
Der Fehler erhalte ich, wenn mein Code ausgeführt ist:
‚Typeerror: erwartete str, Byte oder os.PathLike Objekt, nicht auflisten‘
Schließlich habe ich mit einer hartcodierte Liste von Adressen getestet nur regieren ein Problem aus mit, wie die Liste aus der Datenbank, beispielsweise extrahiert wird:
addresslist = ['C:\\Subfolder1\\Subfolder2', 'D:\\Subfolder1\\Subfolder2']
und wegen Auspacken Fehler:
x,y = ['C:\\Subfolder1\\Subfolder2', 'D:\\Subfolder1\\Subfolder2']
Danke
Wickeln Sie es in eine andere for-Schleife, um die Elemente der 'Adressliste' einzeln zu bearbeiten. Vielleicht verschieben Sie es zu einer zusätzlichen Funktion, um eine zu tiefe Verschachtelung von Loops zu vermeiden. –
Vielen Dank, ich verstehe die Verschachtelung, also habe ich versucht, eine Schleife außerhalb zu erstellen, die beide Orte gut druckt, aber wenn ich es zurücksetze und die Variable drucke, bekomme ich nur den ersten Eintrag der Liste. Ersetzen dieser neuen Variable in dem Code, wo "Adressliste [0:] war, scheint nichts zu entfernen – Meshi