Mehrere Arrays für Loop verwenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
and2handles
User
Beiträge: 2
Registriert: Mittwoch 17. Juni 2020, 22:16

Nabend Leute,

ich möchte zunächst klarstellen, dass ich weder Schüler noch Student bin und dies aus reinem Interesse mache um meinen Alltag zu vereinfachen.
Ich bin noch relativ am Anfang daher verzeiht mir meinen Code und die Syntax.

Da ich in Tutorials als auch in Foren dazu nichts gefunden habe, da ich nicht so recht weiß nach was ich genau suchen soll wollte ich einmal mein Problem beschreiben, in der Hoffnung das mir jemand nützliche Tipps geben kann um meine Suche zu optimieren oder im besten Fall Hilfestellung gibt.

Im Beispiel habe ich 3 Arrays die Miteinander zusammenhängen sollen. Für Position [0] in den Arrays soll gecheckt werden ob eine Aktion ausgeführt werden soll oder nicht. Ich dachte ein Boolean eignet sich dafür gut. Wenn ja, soll die Datei Lizard.txt im spezifischen Ordner reptiles abgespeichert werden. Im nächsten Durchgang soll Array[1] gecheckt werden und so weiter.

Ich habe unten mal den Code aufgeführt wie es in meiner Vorstellung geklappt hätte.

Code: Alles auswählen

import os
import shutil

task = [True, False, True]
animals = ["Lizard","Dog","Tuna"]
folder = ["reptiles","mammals","fish"]

source = 'C:\Automation\animals\'
destination = 'C:\Automation\animals\'
dest = shutil.copy(source, destination)
i = 0

while i <= len(task):
    if task[] = True:
        shutil.copy(source + animals[0] + '.txt', destination + folder[0]) 
    i += 1
    animals[0] +=1
    folder[0] +=1
Meine Idee dabei war, dass ich die 3 Arrays nach jedem Loop um eins hoch setze, jedoch wäre hier die Frage ob es besser wäre eine 3xn matrix zu nutzen oder man die Arrays lieber einzeln lässt.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

In Python gibt es Listen, Arrays sind etwas ganz anderes, meist meint man damit numpy-Arrays.
Man sollte nicht zusammenhängende Daten in parallelen Listen halten, sondern packt alles in eine Liste mit Datenstrukturen, die die Information zusammenhängen.
Man iteriert nicht über einen Index, sondern über die Elemente der Liste direkt. Pfade setzt man nicht mit + zusammen, sondern benutzt pathlib.Path.

Das ganze könnte so aussehen (ungetestet):

Code: Alles auswählen

import shutil
from pathlib import Path

TASKS = [
    (True, "Lizard", "reptiles"),
    (False, "Dog", "mammals"),
    (True, "Tuna", "fish"),
]

SOURCE = Path(r'C:\Automation\animals')
DESTINATION = Path('C:\Automation\animals')

for should_copy, animal, folder in TASKS:
    if should_copy:
        shutil.copy(SOURCE / f"{animal}.txt", DESTINATION / folder)
and2handles
User
Beiträge: 2
Registriert: Mittwoch 17. Juni 2020, 22:16

Guten Morgen Sirius,

herzlichen Dank für die schnelle und gut erklärte Antwort. Ich bin überrascht wie einfach man den Code halten kann für solche Aufgaben.

Besten Dank

Tobias
Antworten