Python Fire kısa çizgisi ve alt çizgi
Python paketi Fire, python komut dosyalarını komut satırından başlatmak için çok kullanışlıdır. Yaygın bir şey, birden çok kelimeden oluşan argümanlara sahip olmaktır, örneğin 3 ortak yolla yazılabilen kedi adı:
- kedinin adı
- kedinin_ adı
- kedinin adı
Birincisi hemen hemen her şeyle uyumluyken, ikincisi bash'de ( POSIX tarzı işletim sistemlerinde komut satırı seçenekleri alt çizgi stili olmalı mı? ) Ve üçüncüsü python'da (python neden tirelerin kullanımına izin vermiyor? fonksiyon ve değişken isimleri? ).
Buradaki sorun, varsayılan olarak yangının argüman adını python kodundan almasıdır; bu, eğer python kodum şöyle görünüyorsa:
script.py:
import fire
def main(name_of_cat='Steve'):
print(f'The name of the cast is {name_of_cat}')
if __name__ == '__main__':
fire.Fire(main)
sonra onu komut satırından (veya bir bash betiğinden) çağırmak için
python script.py --name_of_cat Bob
Şu anda onu kullanma şeklim bu, ancak bu yetersiz geliyor. Burada en iyi uygulamanın ne olduğuna dair bir fikriniz var mı?
Not: python script.py --name-of-cat Bobpython değişken adlarında tire işareti olamayacağı için imkansız olurdu.
Yanıtlar
Görünüşe göre, muhtemelen bu kod satırı nedeniyle kısa çizgiler veya alt çizgilerle çalışıyor . Komut dosyanızı kullanarak:
> python .\script.py --name_of_cat Bob
The name of the cast is Bob
> python .\script.py --name-of-cat Bob
The name of the cast is Bob
Bu aynı zamanda burada Yangın belgelerinde belirtilmiştir:
A örneğini oluşturmak
Buildingve ardındanclimb_stairsişlevi çalıştırmak için aşağıdaki komutların tümü geçerlidir:$ python example.py --name="Sherrerd Hall" --stories=3 climb_stairs 10 $ python example.py --name="Sherrerd Hall" climb_stairs --stairs_per_story=10 $ python example.py --name="Sherrerd Hall" climb_stairs --stairs-per-story 10 $ python example.py climb-stairs --stairs-per-story 10 --name="Sherrerd Hall"Kısa çizgilerin ve alt çizgilerin (
-ve_) üye adlarında ve bayrak adlarında birbirinin yerine kullanılabildiğini fark edeceksiniz .
Bununla birlikte, oluşturulan yardım metni alt çizgili bir bayrak istiyor gibi görünüyor:
> python .\script.py -h
INFO: Showing help with the command 'script.py -- --help'.
NAME
script.py
SYNOPSIS
script.py <flags>
FLAGS
--name_of_cat=NAME_OF_CAT
Benim tavsiyem, kendiniz için hızlı bir komut dosyası hazırlıyorsanız , Fire harikadır , ancak dağıtılacak veya daha karmaşık bir şey yapıyorsanız, argparse ( stdlib'e dahil) gibi daha yapılandırılabilir bir çerçeve kullanmak daha iyidir veya tıklayın (kişisel favorim). İşte Fire'ın kendi belirlediği faydalar listesi; kullanım durumunuz daha karmaşıksa, başka bir kitaplık daha iyi olabilir.
FireModül hakkında emin değilim ama nameofcattip sözdizimini kullandığımız bir python komut satırı uygulamam var . Komut dosyası için argüman olarak toplam 17 aplhabets içeren bir kelimeyi geçiyorum ve herhangi bir hipen veya alt çizgi kullanmıyorum.