SORU
26 Mayıs 2011, PERŞEMBE


Seçenekleri tek bir koleksiyon almak için, çevre ve komut satırı argümanları dosya ayrıştırma config

Python standart kütüphane modülleri vardıryapılandırma dosyasının açılması(configparser),ortam değişkeni okuma(os.environ), vekomut satırı argümanı ayrıştırma(argparse). Tüm bu ve de bir program yazmak istiyorum:

  • Bir vardırseçenek değerleri Çağlayan:

    • varsayılan seçenek değeri geçersiz
    • yapılandırma seçenekleri, geçersiz dosya
    • ortam değişkenleri tarafından geçersiz kılındı
    • komut satırı seçenekleri.
  • Sağlaryapılandırma dosyası konumu, komut satırında belirtilen*4 örneğin*, ve o okur (ya da yerine veya bunlara ek olarak, her zamanki yapılandırma dosyası). Bu hala yukarıdaki cascade itaat gerekir.

  • Sağlartek bir yerde seçenek tanımlaryapılandırma dosyaları ve komut satırı ayrıştırma davranışını belirlemek için.

  • Birleştirir ayrıştırılmış seçenekleri içine biryapılandırma seçeneği değerleri toplama teknereden geldiklerini bakım olmadan erişmek için programın geri kalanı için.

İhtiyacım olan her şey görünüşe göre Python standart kütüphane olduğunu, ama birlikte düzgün çalışmıyor.

Nasıl Python standart kütüphane minimum sapma ile bu elde edebilirsiniz?

CEVAP
17 EKİM 2011, PAZARTESİ


Argparse modülü bu deli değil, bir yapılandırma dosyası, komut satırı gibi mutlu olduğun sürece yapar. (Bu, kullanıcıların yalnızca bir sözdizimi öğrenmek için bir avantaj olduğunu düşünüyorum.) Örneğin fromfile_prefix_chars ayarlama, @, böylece, bunu yapar

my_prog --foo=bar

olur denk

my_prog @baz.conf

eğer @baz.conf,

--foo
bar

Hatta kodunuzu foo.conf otomatik olarak argv değiştirerek alabilirsin

if os.path.exists('foo.conf'):
    argv = ['@foo.conf']   argv
args = argparser.parse_args(argv)

Bu yapılandırma dosyalarının formatı ArgumentParser bir alt yapım ve convert_arg_line_to_args bir yöntem ekleyerek değiştirilebilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • PlugResearch

    PlugResearch

    22 Mart 2006
  • RocketJump

    RocketJump

    22 ŞUBAT 2006