GNU/Linux >> Belajar Linux >  >> Linux

Menjalankan perintah terminal loop di Jupyter

Solusi peretasan yang mungkin adalah menggunakan eval dan biarkan bash mengeksekusi string.

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

Gunakan glob modul dan mungkin subprocess bukannya ! . Sebuah glob.glob("path/*.jpg") sederhana akan membiarkan Anda mengulangi semua gambar.

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)

Menggunakan ! atau eval bukanlah ide yang baik - perintah mungkin gagal secara diam-diam.


! hanya menunjukkan bahwa kode berikut akan dieksekusi di terminal.

Jadi salah satu opsinya adalah mengkodekan pernyataan Anda di bash. Ini tidak semudah Python, tetapi Anda dapat menyelesaikan tugas yang sama seperti ini:

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

Ini adalah for loop, tapi bukan Python for loop.

Sebagai alternatif, pertimbangkan untuk kembali ke kode sumber process.py dan memodifikasinya sehingga akan mengulang melalui file dalam direktori. Ini dapat dilakukan dengan cukup mudah dengan os.listdir fungsi.


Tidak perlu subproses atau format. Sesuatu yang sederhana seperti:

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

bekerja untuk saya.


Linux
  1. Lembar contekan untuk perintah umum Linux

  2. Panduan Bash For Loop dan Contohnya

  3. Linux untuk pemula:10 perintah untuk membantu Anda memulai di terminal

  1. Bagaimana Mengirim Perintah ke Terminal Apa Pun?

  2. Instal tkinter untuk Python

  3. Skrip Nohup untuk Python tidak berfungsi saat berjalan di latar belakang dengan &

  1. 10 Perintah Linux Untuk Diagnostik Jaringan

  2. Contoh Bash untuk loop

  3. Mengekspos python jupyter di LAN