Saya perhatikan bahwa dokumentasi Python 2.7 termasuk modul parsing command-line. Selain getopt
dan optparse
sekarang kita miliki argparse
.
Mengapa modul parsing baris perintah lainnya telah dibuat? Mengapa saya harus menggunakannya optparse
? Apakah ada fitur baru yang harus saya ketahui?
Jawaban:
Pada python
2.7
,optparse
sudah usang, dan mudah-mudahan akan hilang di masa depan.argparse
lebih baik karena semua alasan yang tercantum di halaman aslinya ( https://code.google.com/archive/p/argparse/ ):+
dan/
Informasi lebih lanjut juga ada dalam PEP 389 , yang merupakan kendaraan yang
argparse
membuatnya menjadi perpustakaan standar.sumber
optparse
dalam PEP kemudian argumen tentang betapa rumitnya menambahkan untuk membuatnya terdengar seperti itu dikodekan menjadi sefleksibel batu (buruk).@ Nicholas menjawab dengan baik, saya pikir, tetapi bukan pertanyaan "meta" yang Anda mulai dengan:
Itulah dilema nomor satu ketika modul apa pun yang berguna ditambahkan ke pustaka standar: apa yang Anda lakukan ketika cara yang jauh lebih baik, tetapi tidak kompatibel ke belakang, untuk menyediakan jenis fungsionalitas yang sama muncul?
Entah Anda tetap dengan cara lama dan diakui melampaui (biasanya ketika kita berbicara tentang paket rumit: asyncore vs twisted, tkinter vs wx atau Qt, ...) atau Anda berakhir dengan beberapa cara yang tidak kompatibel untuk melakukan hal yang sama (XML parser, IMHO, adalah contoh yang lebih baik dari ini daripada parser baris perintah - tetapi
email
paket vs berbagai cara lama untuk menangani masalah serupa juga tidak terlalu jauh ;-).Anda dapat membuat omelan mengancam dalam dokumen tentang cara-cara lama menjadi "usang", tetapi (selama Anda perlu menjaga kompatibilitas ke belakang) Anda tidak dapat benar-benar menghilangkannya tanpa menghentikan aplikasi besar dan penting dari pemindahan ke rilis Python yang lebih baru.
(Dilema nomor dua, tidak terkait langsung dengan pertanyaan Anda, dirangkum dalam pepatah lama, "perpustakaan standar adalah tempat paket yang baik untuk mati" ... dengan rilis setiap setengah tahun atau lebih, paket yang tidak terlalu, sangat stabil, tidak memerlukan rilis lebih sering dari itu, sebenarnya bisa sangat menderita dengan menjadi "beku" di perpustakaan standar ... tapi, itu benar-benar masalah yang berbeda).
sumber
parser.add_argument('--long-opt', '-l',...)
; '-' ditangani dengan mudah, dan bagaimanapun Anda suka.Sumber terbaik untuk alasan penambahan Python adalah PEP: PEP 389: argparse - Modul Parsing Baris Perintah Baru , khususnya, bagian yang berjudul, Mengapa tidak mendapatkan optopars dan optparse yang cukup?
sumber
Ada juga anak-anak baru di blok!
Jika Anda membutuhkan perbandingan yang lebih mendalam, silakan baca ini dan Anda dapat menggunakan docopt atau klik . Terima kasih kepada Kyle Purdon!
sumber
Pada awalnya saya enggan sebagai @fmark untuk beralih dari optparse ke argparse, karena:
Lalu saya melihat dokumen ini, argparse mengungguli optparse, terutama ketika berbicara tentang menghasilkan pesan bantuan yang bermakna: http://argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html
Dan kemudian saya melihat " argparse vs optparse " oleh @Nicholas, mengatakan kita bisa memiliki argparse tersedia dalam python <2.7 (Yap, saya tidak tahu itu sebelumnya.)
Sekarang kedua masalah saya telah diatasi dengan baik. Saya menulis harapan ini akan membantu orang lain dengan pola pikir yang sama.
sumber