GNU/Linux >> Linux の 問題 >  >> Linux

Jupyter での for loop 端末コマンドの実行

考えられるハックな解決策は、 eval を使用することです bash に文字列を実行させます。

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

glob を使用 モジュールとおそらく subprocess ! の代わりに .シンプルな glob.glob("path/*.jpg") すべての画像を繰り返し処理できます。

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)

! の使用 または eval 決して良い考えではありません - コマンドは黙って失敗するかもしれません.


! ターミナルで次のコードが実行されることを単に示します。

したがって、1 つのオプションは、bash でステートメントをコーディングすることです。 Python ほど簡単ではありませんが、次のように同じタスクを実行できます。

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

これは for ループですが、Python の for ループではありません。

または、process.py のソース コードに戻ることを検討してください。 ディレクトリ内のファイルをループするように変更します。これは os.listdir で簡単に実行できます 関数。


サブプロセスやフォーマットは必要ありません。次のような簡単なもの:

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


Linux
  1. 効果的なプロセス管理のための8つのLinuxコマンド

  2. 初心者のためのLinux:ターミナルで始めるための10のコマンド

  3. コマンドを任意の端末にパイプする方法は?

  1. 一般的なLinuxコマンドのチートシート

  2. Python 用の tkinter をインストールする

  3. &を使用してバックグラウンドで実行すると、Python スクリプトの Nohup が機能しない

  1. BashForループガイドと例

  2. Bash for ループの例

  3. LAN上でpython jupyterを公開する