[Çözüldü] Python parametre değerini yazdırmak

Başlatan marslı, 17 Kasım 2016 - 23:09:39

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

marslı

Daha önce parametreler ile ilgili bir kaç sorum olmuştu. Sağolsun arkadaşlar yardımcı oldular. Şimdi ki sorum ise şu şekilde.
komut: ./python.py --parametre "bilmem ne bilmem ne"
çıktısı: bilmem ne bilmem ne

yapmak istediğim parametrenin yanına yazdığım şeyi print ile ekrana yansıtmak.
Nasıl yapabiliriz bunu?

ShangriLa

Bu is icin en iyi yol argparse kullanmaktir. Ornek:

import argparse                                                                     
                                                                                   
parser = argparse.ArgumentParser()                                                 
parser.add_argument('--parametre')                                                                                     
args = parser.parse_args()                                                         
                                                                                   
if args.parametre:                                                                 
    print(args.parametre)
Ubuntu Mate Trusty

marslı

sys.argv ile yapabilirsem daha iyi olur

ShangriLa

argparse python standart kütüphanesinde yer alan bir kütüphane. sys gibi aynı. Macera arayıp programın akışını bozmaya gerek yok bence.
Ubuntu Mate Trusty

marslı

#4
Yanlız şöyle bir sorunum var.
parametre yanına bir şey yazmayacağım zaman nasıl olacak? deneme için --pg yazdım.
sadece ./asd.py --pg yazdığımda hata veriyor.

ShangriLa

Onun icin "store_true" action'unu kullanman lazim. Ornek:


import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--parametre')
parser.add_argument('--pg', action='store_true')
args = parser.parse_args()

if args.parametre:
    print(args.parametre)

if args.pg:
    print("PG argumani verildi")


argparse cok gelismis bir modul ve gerekli arguman tanimlamalarindan otomatik yardim olusturmaya kadar bir cok isi yapabilir. Daha ayrintili bilgiyi: https://docs.python.org/3.6/library/argparse.html burada bulabilirsin.
Ubuntu Mate Trusty

marslı

Tamamdır teşekkür ederim kardeşim.

if


marslı

Teşekkürler @if.
argparse istediklerimi tam anlamıyla yapıyor aslında ama bir yerde takıldım ve yapamadım.
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('parametre')
args = parser.parse_args()     

if args.parametre == "yes":
print "tamam"

if args.parametre == "no":
print "tamam değil"

parametrenin yanına bir yazı yazdığımda hata veriyor. Yapmak istediğimse şu
./python.sh parametre yes
Bu komutu çalıştırdığımda link altındaki komutların çalışmasını istiyorum. Kullandığım komut yukarıdaki. Burada nasıl bir değişiklik yapmalıyım?

ShangriLa

Onun nedeni eğer arguman tanımlamaların -- ile başlamazsa direkt alınıyor olmalarından kaynaklanıyor. Şöyle kullanırsan çalışır:


import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--parametre')
args = parser.parse_args()

if args.parametre == "yes":
    print("tamam")

if args.parametre == "no":
    print("tamam değil")



$ python3 /tmp/deneme.py --parametre yes
tamam
Ubuntu Mate Trusty

marslı

@ShangriLa o şekilde yaptığımda çalışıyor orada sıkıntı yok. Ben "--" çizgilerini eklemeden yapmak istiyorum. Ayrıca python2 üzerinde çalışıyorum. 
araştırırken bir örnek buldum ama hata veriyor aynı kodu yazdığımda.
https://github.com/vinc3nt/stem-tortp/blob/master/tortp

ShangriLa

Sanırım bu argparse'ın yeni surumlerinde degismis. -- kullanmadan olmuyor dedigin.
Ubuntu Mate Trusty