Saya punya kode ini:
def hello():
return 'Hi :)'
Bagaimana saya menjalankan ini langsung dari baris perintah?
python
function
command-line
Steven
sumber
sumber
print "Hi :)"
bukanreturn 'Hi :)'
.Jawaban:
Dengan argumen
-c
(perintah) (dengan asumsi file Anda bernamafoo.py
):Atau, jika Anda tidak peduli dengan polusi namespace:
Dan jalan tengah:
sumber
$python -c "import foo;foo.hello()"
print foo.hello()
denganprint(foo.hello())
. Saya tidak memiliki pengetahuan python untuk menjelaskan mengapa ini terjadi, jadi jika orang lain dapat menjelaskan apa yang sedang terjadi, itu akan sangat dihargaiCukup letakkan di
hello()
suatu tempat di bawah fungsi dan itu akan dijalankan ketika Anda melakukannyapython your_file.py
Untuk solusi yang lebih rapi, Anda dapat menggunakan ini:
Dengan begitu fungsi hanya akan dieksekusi jika Anda menjalankan file, bukan ketika Anda mengimpor file.
sumber
hello()
mengambil argumen yang harus disediakan oleh baris perintah?sys.argv
ke metode. Atau akses dari metode halohello()
) dan menjalankannya dari baris perintah?python -c 'from myfile import hello; hello()'
di manamyfile
harus diganti dengan nama sandi skrip Python Anda. (Misalnya,myfile.py
menjadimyfile
).Namun, jika
hello()
titik masuk utama "permanen" Anda dalam skrip Python Anda, maka cara biasa untuk melakukan ini adalah sebagai berikut:Ini memungkinkan Anda untuk menjalankan skrip hanya dengan menjalankan
python myfile.py
ataupython -m myfile
.Beberapa penjelasan di sini:
__name__
adalah variabel Python khusus yang menyimpan nama modul yang sedang dieksekusi, kecuali ketika modul dimulai dari baris perintah, dalam hal ini menjadi"__main__"
.sumber
python -m foo -c 'foo.bar()'
danpython -c 'import foo; foo.bar()'
? Saya mendapatkan perilaku yang berbeda di mana tampaknya argumen -c diabaikan dalam kasus pertama.Saya menulis skrip Python kecil cepat yang dapat dipanggil dari baris perintah bash. Dibutuhkan nama modul, kelas dan metode yang ingin Anda panggil dan parameter yang ingin Anda sampaikan. Saya menyebutnya PyRun dan meninggalkan ekstensi .py dan membuatnya dieksekusi dengan chmod + x PyRun sehingga saya bisa memanggilnya dengan cepat sebagai berikut:
Simpan ini dalam file yang disebut PyRun
Berikut adalah contoh modul untuk menunjukkan cara kerjanya. Ini disimpan dalam file bernama PyTest.py:
Coba jalankan contoh-contoh ini:
Perhatikan contoh terakhir melarikan diri tanda kurung untuk lulus dalam tuple sebagai satu-satunya parameter untuk metode Kedua.
Jika Anda melewatkan terlalu sedikit parameter untuk metode apa yang Anda butuhkan, Anda mendapatkan kesalahan. Jika Anda melewati terlalu banyak, ia mengabaikan ekstra. Modul harus berada di folder saat ini, menempatkan PyRun bisa di mana saja di jalur Anda.
sumber
tambahkan potongan ini ke bagian bawah skrip Anda
Anda sekarang dapat memanggil fungsi Anda dengan menjalankan
Ini berfungsi karena Anda meneruskan argumen baris perintah (string nama fungsi) ke
locals
, kamus dengan tabel simbol lokal saat ini. Tanda kurung pada akhirnya akan membuat fungsi dipanggil.pembaruan: jika Anda ingin fungsi menerima parameter dari baris perintah, Anda bisa masuk
sys.argv[2]
seperti ini:Dengan cara ini, menjalankan
python myscript.py myfunction "hello"
akan menghasilkanhello
.sumber
myfunction(12)
Mari kita buat ini sedikit lebih mudah pada diri kita dan cukup gunakan modul ...
Mencoba:
pip install compago
Lalu menulis:
Kemudian gunakan seperti ini:
Catatan: Ada bug di Python 3 saat ini, tetapi berfungsi baik dengan Python 2.
Sunting: Pilihan yang lebih baik lagi, menurut saya adalah modul fire oleh Google yang membuatnya mudah untuk meneruskan argumen fungsi. Itu diinstal dengan
pip install fire
. Dari GitHub mereka:Ini contoh sederhana.
Kemudian, dari baris perintah, Anda dapat menjalankan:
sumber
python -m fire file_name method_name
. Ini juga memiliki argparser bawaan.Cukup menarik, jika tujuannya adalah untuk mencetak ke konsol baris perintah atau melakukan beberapa operasi python menit lainnya, Anda dapat menyalurkan input ke interpreter python seperti:
serta file pipa ..
* Perhatikan bahwa ekstensi tidak harus .py agar yang kedua berfungsi. ** Juga perhatikan bahwa untuk bash Anda mungkin perlu melarikan diri dari karakter
sumber
echo import foo;foo.hello() | python
echo 'print("hi:)")' | python
Jika Anda menginstal paket runp dengan
pip install runp
masalah menjalankan:runp myfile.py hello
Anda dapat menemukan repositori di: https://github.com/vascop/runp
sumber
Saya memiliki persyaratan untuk menggunakan berbagai utilitas python (rentang, string, dll.) Pada baris perintah dan telah menulis alat pyfunc khusus untuk itu. Anda dapat menggunakannya untuk memperkaya pengalaman penggunaan baris perintah Anda:
sumber
Itu selalu merupakan opsi untuk memasukkan python di baris perintah dengan perintah python
kemudian impor file Anda jadi impor example_file
kemudian jalankan perintah dengan example_file.hello ()
Ini menghindari fungsi .pyc copy aneh yang muncul setiap kali Anda menjalankan python -c dll.
Mungkin tidak semudah perintah tunggal, tetapi perbaikan cepat yang baik untuk teks file dari baris perintah, dan memungkinkan Anda untuk menggunakan python untuk memanggil dan mengeksekusi file Anda.
sumber
Sesuatu seperti ini: call_from_terminal.py
Ini bekerja di bash.
sumber
Di bawah ini adalah file Odd_Even_function.py yang memiliki definisi fungsi.
Sekarang untuk memanggil yang sama dari Command prompt di bawah ini adalah opsi yang berfungsi untuk saya.
Opsi 1 Path lengkap dari exe \ python.exe -c "import Odd_Even_function; Odd_Even_function.OE (100)"
Opsi 2 Path lengkap exe \ python.exe -c "dari Odd_Even_function import OE; OE (100)"
Terima kasih.
sumber
Fungsi ini tidak dapat dijalankan dari baris perintah karena mengembalikan nilai yang tidak akan ditangani. Anda dapat menghapus pengembalian dan menggunakan cetak sebagai gantinya
sumber
Gunakan alat python-c ( pip install python-c ) dan kemudian cukup menulis:
atau jika Anda tidak memiliki bentrokan nama fungsi di file python Anda:
sumber
Pertama, Anda harus memanggil fungsi seperti yang mereka katakan atau fungsi tidak akan menampilkan apa pun di output, setelah itu simpan file dan salin path file dengan klik kanan ke folder file dan klik "copy file" lalu buka terminal dan tulis: - cd "path file" - python "nama file misalnya (main.py)" setelah itu akan menampilkan output dari kode Anda.
sumber
Buat hidup Anda lebih mudah, instal Spyder. Buka file Anda kemudian jalankan (klik panah hijau). Setelah itu
hello()
metode Anda didefinisikan dan dikenal oleh Konsol IPython, sehingga Anda dapat memanggilnya dari konsol.sumber