GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausführen von for-Loop-Terminalbefehlen in Jupyter

Eine mögliche hackige Lösung könnte darin bestehen, eval zu verwenden und lassen Sie bash einen String ausführen.

for idx in range(10):
    !eval {"python process.py --filename /Users/images/{image}.jpg".format(image=idx)}

Verwenden Sie die glob Modul und vielleicht subprocess statt ! . Eine einfache glob.glob("path/*.jpg") lässt Sie über alle Bilder iterieren.

from glob import glob
from subprocess import check_call

for i in glob("/Users/images/*.jpg"):
    print("Processing:", i)
    check_call(["python", "process.py", "--filename", i], shell=False)

Mit ! oder eval ist nie eine gute Idee - der Befehl kann stillschweigend fehlschlagen.


Die ! gibt einfach an, dass der folgende Code im Terminal ausgeführt wird.

Eine Möglichkeit besteht also darin, Ihre Anweisung einfach in Bash zu codieren. Es ist nicht ganz so einfach wie Python, aber Sie können die gleiche Aufgabe wie folgt erledigen:

! for file in /Users/images/*.jpg; do python process.py --filename /Users/images/$i; done

Es ist eine For-Schleife, aber keine Python-For-Schleife.

Alternativ können Sie auch zum Quellcode von process.py zurückkehren und es so zu modifizieren, dass es die Dateien in einem Verzeichnis durchläuft. Das geht ganz einfach mit dem os.listdir Funktion.


Kein Unterprozess oder Format erforderlich. Etwas so Einfaches wie:

for idx in range(10):
    !python process.py --filename /Users/images/{idx}.jpg

funktioniert für mich.


Linux
  1. Spickzettel für allgemeine Linux-Befehle

  2. 10 Linux-Befehle für die Netzwerkdiagnose

  3. Linux für Anfänger:10 Befehle für den Einstieg am Terminal

  4. Bash für Schleifenbeispiele

  5. Installieren Sie tkinter für Python

14 gefährliche Linux-Terminalbefehle

Bash für Schleife

Die 20 besten Linux-Terminalbefehle zum Ausprobieren für Anfänger

Verknüpfungen zum Navigieren im Terminalverlauf

Undistract-me :Erhalten Sie eine Benachrichtigung, wenn lang andauernde Terminalbefehle abgeschlossen sind

Docker Exec:Ihr Goto-Befehl zum Ausführen von Befehlen in Docker