GNU/Linux >> Tutoriels Linux >  >> Linux

Exécution des commandes de terminal de boucle dans Jupyter

Une solution hackish possible pourrait être d'utiliser eval et laissez bash exécuter une chaîne.

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

Utilisez le glob module et peut-être subprocess au lieu de ! . Un simple glob.glob("path/*.jpg") vous permettra de parcourir toutes les images.

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)

Utilisation de ! ou eval n'est jamais une bonne idée - la commande peut échouer silencieusement.


Le ! indique simplement que le code suivant sera exécuté dans le terminal.

Donc, une option consiste simplement à coder votre déclaration en bash. Ce n'est pas aussi simple que Python, mais vous pouvez accomplir la même tâche comme ceci :

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

C'est une boucle for, mais pas une boucle for Python.

Vous pouvez également envisager de revenir au code source de process.py et le modifier pour qu'il parcoure les fichiers d'un répertoire. Cela peut être fait assez facilement avec le os.listdir fonction.


Pas besoin de sous-processus ou de format. Quelque chose d'aussi simple que :

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

fonctionne pour moi.


Linux
  1. 8 commandes Linux pour une gestion efficace des processus

  2. Linux pour débutants :10 commandes pour démarrer au terminal

  3. Bash for loop Exemples

  4. Installer tkinter pour Python

  5. Exposer python jupyter sur LAN

14 commandes de terminal Linux dangereuses

Bash pour la boucle

Top 20 des commandes de terminal Linux à essayer pour un débutant

Raccourcis pour naviguer dans l'historique du terminal

Undistract-me :recevez une notification lorsque les commandes de terminal de longue durée sont terminées

Docker Exec :votre commande Goto pour exécuter des commandes dans Docker