2011-08-12 14 views
8

Python'a bir Perl (çok az bilgiye sahip olduğum) betiğini hareket ettiriyorum.Perl to Python: Bunu yapın veya ölün

$path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n"; 

ben (umarım) bu hat ne yaptığını görmek, ya ortam değişkeni 'SOME_NAME' ya da kullanıcıya bir hata mesajı yazdırmak bu olmazsa değişken 'yolunu' ayarlayabilirsiniz. (Yan not: Herkes, '||' gibi özel karakterleri aramak için arama motorunu nasıl öğrenir?)

"Pythonic" şekilde (İzin Verme İstisndan Daha Kolay) : Bu, özellikle 3 farklı ortam değişkenine göre yaptığım gibi oldukça zahmetli göründüğü için, .

Eğer daha iyi bir uygulama varsa herhangi bir fikir var mı, yoksa bunun “pythonic” yolu olduğunu söyleyebilir misiniz?

Çok teşekkürler

+0

Google sorgunuz hakkında, [google yardım] (http://www.google.com/support/websearch/bin/static.py?hl=tr&page=guide.cs&guide=1221265&answer=134479&rd=1): 'Genel olarak , # # $%^& *() = + [] \ ve diğer özel karakterler de dahil olmak üzere noktalama işareti yok sayılır. 'muhtemelen bu konuda fazla bir şey yapamaz – Jacob

+0

Sadece bir arama motoru var mı diye merak ediyorum Onları görmezden gelmedi, özellikle böyle şeyler ararken yararlı olur! – Jdog

+0

@Jdog Eğer karakterin adını google yaparsanız anlamlı bir şey elde edebilirsiniz. '|| 'tipi" perl dikey çubuklar "türünü aramak için örnek için. Herhangi bir şey varsa, karakterler ve semboller üzerinde [wikipedia pages] (http://en.wikipedia.org/wiki/Pipe_character) genellikle birçok programlama dilinde ne kullanıldığını listeler. – MattLBeck

cevap

11
try: 
    path = os.environ['SOME_NAME'] 
    var2 = os.environ['VAR2'] 
    var3 = os.environ['VAR3'] 
    var4 = os.environ['VAR4'] 
except KeyError,e: 
    print "Not found: ", e 

Bir try bloğu içine birden fazla ifadeyi koyabilirsiniz.

+0

Evet, ayrılmak istediğimi düşünüyordum ki, eksik olan kullanıcıya anlatabilirdim, ama bu elbette ki istisnai durumun izinde yer alacak .. Şerefe! – Jdog

6

Orada sahip olduğunuz aslında oldukça yaygın bir deyim ve tartışmasız tercih edilen modeldir. Ya da sadece normal istisnanın ekstra bir şey yazdırmadan geçmesine izin verirsin. Python doğal olarak aynı etkiye sahiptir. Yani,

path = os.environ["SOME_NAME"] 

sadece kendi başına bir KeyError istisna yükseltmek Will ve varsayılan davranış yakalanmamış istisnalarla ilgili çıkmak etmektir. Traceback size ne ve nerede olduğunu gösterecektir.

Ancak, mümkün ise, varsayılan bir değer de sağlayabilirsiniz.

path = os.environ.get("SOME_NAME", "/default/value") 

Bu hata vermeyecek ve varsayılan eylem olarak mantıklı bir şey yapabilirsiniz.