'/ayrıştırma komut satırı kapmak için en iyi yolu ne bağımsız bir Python betiği geçti?
Bu nedirkolay, tersest ve en esnekPython komut satırı argümanları ayrıştırmak için bir yöntem ya da kütüphane?
CEVAP
Bu cevap 6* *eski Python sürümleri için uygun olduğu göstermektedir. Python ve üstü 2.7, argparse optparse değiştirir. Daha fazla bilgi için this answer bkz.
Diğer insanlar da belirttiği gibi, getopt üzerinde optparse ile gitmekten daha iyi. getopt hemen hemen bire bir standart getopt(3) eşleme C kütüphane fonksiyonları ve kullanımı çok kolay değil.
biraz daha ayrıntılı olurken optparse, çok daha iyi yapılandırılmış ve daha sonra genişletmek için daha kolaydır.
İşte çözümleyici için bir seçenek eklemek için tipik bir satır:
parser.add_option('-q', '--query',
action="store", dest="query",
help="query string", default="spam")
Bu kadar çok fazla konuştuğu için kendisini; işlem süresi, kabul edecek -s veya --sorgu gibi seçenekler, depolanması bağımsız bir öznitelik adı sorgu ve varsayılan değer vermezsen belirtin. Ayrıca kendi kendine tanım seçeneği ile yardımcı değişken bildirmek-h/--ile çalıştırıldığında kullanılacak yardımcı olacak olan şu.
Genellikle bağımsız değişken ayrıştırılamadı:
options, args = parser.parse_args()
Bu, varsayılan olarak, standart argümanlar komut (sys.geçti ayrıştıracaktır[1:] elde ettik)
seçenekler.daha sonra sorgu komut dosyası için geçirilen değeri ayarlanır.
Sadece yaparak bir ayrıştırıcı oluşturun
parser = optparse.OptionParser()
Bu size gerekli olan tüm temel vardır. İşte bu gösterir tam bir Python betiği:
import optparse
parser = optparse.OptionParser()
parser.add_option('-q', '--query',
action="store", dest="query",
help="query string", default="spam")
options, args = parser.parse_args()
print 'Query string:', options.query
Sana temel hareketleri gösteren python 5 satır.
Bir kez sample.py ve çalıştırın kaydedin
python sample.py
ve bir kez
python sample.py --query myquery
Bunun ötesinde, optparse çok kolay uzatmak olduğunu göreceksiniz. Projelerimden birinde, bir komut ağacında alt komutlar kolayca yuva sağlayan Komut bir sınıf oluşturdu. Optparse ağır komutları birlikte zinciri için kullanır. Kolayca birkaç satır açıklayabileceğim bir şey değil, ama 16* *ana sınıfı olarak a class that uses it and the option parser için çekinmeyin

BaÅŸka bir python betiÄŸi python betiÄŸi ...
Bir PHP komut dosyası komut satırı vs ...
Seçenekleri tek bir koleksiyon almak i...
Nasıl nesne yönelimli programlamada iç...
Nasıl bir python yapmak için, komut sa...