Herhangi bir komut sayıtı argumanına erişim sağlamak için sys modülünü kullanabiliriz.
$ python test.py arg1 arg2 arg3
Burada sys.argv komut dosyası adını gösterir diğer liste elemanlarında ise sırasıyla argumanlar yer alır.
Aşağıda yer alan test.py dosyasını inceleyin.
#!/usr/bin/python import sys print 'Arguman sayisi:', len(sys.argv), ' arguman.' print 'Arguman listesi:', str(sys.argv)
Şimdi hazırlamış olduğumuz test.py dosyamızı aşağıdaki şekilde çalıştırın.
$ python test.py arg1 arg2 arg3
Çalıştırıldığı an aşağıdaki sonucu verir.
Arguman sayisi: 4 arguman.
Arguman listesi:
NOT: Yukarıda belirtildiği gibi, ilk bağımsız değişken her zaman komut dosyası adıdır ve bu liste içinde tutulduğu için arguman sayısına ilave olmaktadır.
Python, komut satırı seçeneklerini ve bağımsız değişkenlerini parse etmemize, yönetmemize yardımcı olan bir getopt modülü sunar. Bu modül fonksiyonlar ve bir exception sağlar.
Bu method, komut satırı seçeneklerini ve parametre listesini ayrıştırır. Bu yöntem için basit sentaks yapısı aşağıdadır -
getopt.getopt(args, options, [long_options])
Argüman listesinde var olmayan bir seçenek bulunduğu zaman veya eksik bir argüman girildiği zaman orataya çıkar.
Exception, hatanın nedenini gösteren bir dize çıktısıdır. Bu çıktı hata mesajını ve ilgili seçenekleri gösterir.
Bu tip kullanımlara örnek kaynak ve hedef dosyalar gibi seçenekleri komut satırı üzerinde kullanmak istediğimiz zaman daha kullanışlı hale getiren durumlardır. Şimdi buna benzer bir senaryo uygulayalım komut satırı üzerinden iki adet dosya ismi gönderelim ve bu dosyaları kontrol etmek için seçenekler sunalım.
kullanim: test.py -s <kaynakdosya> -t <hedefdosya>
test.py dosyasını oluşturan kaynak kodlarımız.
#!/usr/bin/python import sys, getopt def islemler(argv): kaynakdosya = '' hedefdosya = '' try: opts, args = getopt.getopt(argv,"hs:t:",["kaynakdosya=","hedefdosya="]) except getopt.GetoptError: print 'Kullanim: test.py -s <kaynakdosya> -t <hedefdosya>' sys.exit(2) for opt, arg in opts: if opt == '-h': print 'Kullanim: test.py -s <kaynakdosya> -t <hedefdosya>' sys.exit(2) elif opt in ("-s", "--kaynakdosya"): kaynakdosya = arg elif opt in ("-t", "--hedefdosya"): hedefdosya = arg print 'Kaynak dosya "', kaynakdosya print 'Hedef dosya "', hedefdosya if __name__ == "__main__": islemler(sys.argv[1:])
Yukarıda yazdığımız python scriptini aşağıdaki şekilde çalıştıralım.
python test.py -h Kullanim: test.py -s <kaynakdosya> -t <hedefdosya> python test.py -s JPG -t Kullanim: test.py -s <kaynakdosya> -t <hedefdosya> python test.py -s kaynakdosya Kaynak dosya " kaynakdosya Hedef dosya "
Yorumlar
Çok iyi, tam da bunu arıyordum. Teşekkürler.
Bunu bulduğuma sevindim. Biraz karmaşık gibi ama sanırım anlayabilirim.