SORU
21 AĞUSTOS 2008, PERŞEMBE


'/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
25 AĞUSTOS 2008, PAZARTESİ


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fireflame65

    fireflame65

    27 Mart 2007
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • MuscleProdigyTV

    MuscleProdig

    8 Ocak 2011