GNU/Linux >> Linux Esercitazione >  >> Linux

In esecuzione per i comandi del terminale loop in Jupyter

Una possibile soluzione hacker potrebbe essere quella di utilizzare eval e lascia che bash esegua una stringa.

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

Usa il glob module e forse subprocess invece di ! . Un semplice glob.glob("path/*.jpg") ti permetterà di iterare su tutte le immagini.

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)

Usando ! o eval non è mai una buona idea - il comando potrebbe fallire silenziosamente.


Il ! indica semplicemente che il seguente codice verrà eseguito nel terminale.

Quindi un'opzione è solo quella di codificare la tua dichiarazione in bash. Non è così facile come Python, ma puoi eseguire lo stesso compito in questo modo:

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

È un ciclo for, ma non un ciclo for di Python.

In alternativa, considera di tornare al codice sorgente di process.py e modificandolo in modo che scorra i file in una directory. Questo può essere fatto abbastanza facilmente con il os.listdir funzione.


Non c'è bisogno di sottoprocessi o formati. Qualcosa di semplice come:

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

funziona per me.


Linux
  1. 10 comandi Linux per la diagnostica di rete

  2. Linux per principianti:10 comandi per iniziare dal terminale

  3. Come inviare comandi a qualsiasi terminale?

  4. Installa tkinter per Python

  5. Lo script Nohup per Python non funziona durante l'esecuzione in background con &

14 pericolosi comandi del terminale Linux

Bash For Loop

I 20 migliori comandi del terminale Linux da provare per un principiante

Scorciatoie per la navigazione nella cronologia del terminale

Undistract-me:ricevi una notifica quando vengono completati i comandi del terminale di lunga durata

Docker Exec:il tuo comando Goto per l'esecuzione di comandi in Docker