Apakah ada cara singkat untuk mencapai apa yang dilakukan antarmuka baris perintah APT ( Advanced Package Tool ) dalam Python?
Maksud saya, ketika manajer paket meminta pertanyaan ya / tidak diikuti oleh [Yes/no]
, skrip menerima YES/Y/yes/y
atau Enter(defaultnya Yes
seperti diisyaratkan oleh huruf kapital).
Satu-satunya hal yang saya temukan di dokumen resmi adalah input
dan raw_input
...
Saya tahu ini tidak sulit untuk ditiru, tetapi menjengkelkan untuk menulis ulang: |
raw_input()
disebutinput()
.Jawaban:
Seperti yang Anda sebutkan, cara termudah adalah menggunakan
raw_input()
(atau hanyainput()
untuk Python 3 ). Tidak ada cara bawaan untuk melakukan ini. Dari Recipe 577058 :Contoh penggunaan:
sumber
elif choice in valid:
Dan saya mungkin akan mengembalikan boolean.raw_input()
dipanggilinput()
dengan Python3raw_input()
denganinput()
untuk Python3.Saya akan melakukannya dengan cara ini:
sumber
raw_input()
disebutinput()
dalam Python3Ada fungsi
strtobool
dalam pustaka standar Python: http://docs.python.org/2/distutils/apiref.html?highlight=distutils.util#distutils.util#distutils.util.strtoboolAnda dapat menggunakannya untuk memeriksa input pengguna dan mengubahnya ke
True
atauFalse
nilai.sumber
f
mungkin singkatan False, danFalse == 0
, jadi saya mendapatkan logikanya. Mengapa fungsi akan mengembalikanint
bukanbool
merupakan misteri bagi saya.False
atau0
(Nol). Apa saja, yang lain yang dievaluasi menggunakan fungsi bool menjadi benar dan akan kembali:1
.if strtobool(string) is False: do_stuff()
.Cara yang sangat sederhana (tetapi tidak sangat canggih) untuk melakukan ini untuk satu pilihan adalah:
Anda juga dapat menulis fungsi sederhana (sedikit ditingkatkan) di sekitar ini:
Catatan: Di Python 2, gunakan
raw_input
sebagai gantiinput
.sumber
result = raw_input("message").lower() in ('y','yes')
Anda dapat menggunakan klik 's
confirm
metode.Ini akan mencetak:
Harus bekerja
Python 2/3
di Linux, Mac atau Windows.Documents: http://click.pocoo.org/5/prompts/#confirmation-prompts
sumber
seperti yang disebutkan oleh @Alexander Artemenko, inilah solusi sederhana menggunakan strtobool
sumber
sys.stdout.write
bukanprint
?strtobool()
tidak (dari tes saya) memerlukan alower()
. Namun ini tidak eksplisit dalam dokumentasinya.Saya tahu ini telah dijawab dengan banyak cara dan ini mungkin tidak menjawab pertanyaan khusus OP (dengan daftar kriteria) tetapi ini adalah apa yang saya lakukan untuk kasus penggunaan yang paling umum dan jauh lebih sederhana daripada tanggapan lain:
sumber
raw_input
dinamai ulanginput
dengan python 3 stackoverflow.com/questions/21122540/…Anda juga dapat menggunakan pembisik .
Tanpa malu-malu diambil dari README:
sumber
Saya memodifikasi jawaban fmark oleh python 2/3 lebih kompatibel dengan pythonic.
Lihat modul utilitas ipython jika Anda tertarik pada sesuatu dengan lebih banyak penanganan kesalahan
sumber
pada 2.7, apakah ini terlalu non-pythonic?
setidaknya menangkap variasi YA.
sumber
Melakukan hal yang sama dengan python 3.x, di mana
raw_input()
tidak ada:sumber
Untuk Python 3, saya menggunakan fungsi ini:
Fungsi strtobool mengubah string menjadi bool. Jika string tidak dapat diuraikan maka akan meningkatkan ValueError.
Dalam Python 3 raw_input telah diubah namanya menjadi input .
sumber
Anda dapat mencoba sesuatu seperti kode di bawah ini untuk dapat bekerja dengan pilihan dari variabel 'diterima' di sini:
Ini kodenya ..
sumber
Sebagai noob pemrograman, saya menemukan banyak jawaban di atas terlalu rumit, terutama jika tujuannya adalah untuk memiliki fungsi sederhana yang dapat Anda berikan berbagai pertanyaan ya / tidak, memaksa pengguna untuk memilih ya atau tidak. Setelah menjelajahi halaman ini dan beberapa orang lain, dan meminjam berbagai ide bagus, saya berakhir dengan yang berikut:
sumber
Bagaimana dengan ini:
sumber
Inilah yang saya gunakan:
sumber
Beginilah cara saya melakukannya.
Keluaran
sumber
Inilah pendapat saya, saya hanya ingin membatalkan jika pengguna tidak menegaskan tindakan.
sumber
Contoh Python 3 yang dibersihkan:
sumber