2016-03-22 16 views
0

Komut satırı arabirimi olan bir python komut dosyası var. Ben bir txt dosyasında çıkışını kurtaran bir bash komut dosyasından yürütün:Bir python komut dosyasını bash ile değiştirin ve değişikliklerle birlikte çalıştırın

#!/bin/bash 

for ... in ... 
do 
    echo "Foo:$foo" 
    echo "Bar:$bar" 
    ./pythonScript.py --argument1 "arg" 
    # make changes 
done  

Ne piton komut belirli bir çizgi değiştirmek ve yeni bir çizgi ile tekrar çalıştırmak yapmak istediğim değişti dek döngü bitirir.

değiştirmek istiyorum piton komut kod parçası benzerdir: Sorgunun

QUERY = 'www.foo.com' + '/bar?' \ 
     + '&title=%(title)s' \ 
     + '&start=0' \ 
     + '&num=%(num)s' 

start parametre 20 birim döngü her yürütüldüğünde zaman artarak edilmelidir. Yani, 5 yürütme sonrasında start 100 olmalıdır.

Bunu yapmanın bir yolu var mı?

+3

Eğer piton komut dosyasına ikinci argüman olarak uygulayamaz bir nedeni gibi döngü şey çalıştırmak? – MatsLindh

+0

Python'da her şeyi yapamayacağınızın özel bir nedeni var mı? –

+0

@MatsLindh Hayır, bu şekilde mükemmel bir şekilde yapılabilir – Oscar

cevap

0

Birden çok yorum zaten önerildiği gibi, bunu yapma. Python komut dosyasını yerine, bunun yerine ikinci bir parametre kabul edecek şekilde değiştirin. Kodunuzu anında değiştirmek kırılgan ve karmaşıktır ve bunun standart çözümü, değiştirmek istediğiniz şeyleri parametrelendirmektir.

QUERY = 'www.foo.com' + '/bar?' \ 
     + '&title=%(title)s' \ 
     + '&start=%(start)i' \ 
     + '&num=%(num)s' 

Sonra

start=0 
for ... in ... 
do 
    echo "Foo:$foo" 
    echo "Bar:$bar" 
    ./pythonScript.py --argument1 "arg" --start "$start" 
    ((start += 20)) # bash only 
done  
0

İhtiyacınız olan şey sadece bir döngüdür?

start = 0 

for i in range(5) 
    QUERY = 'www.foo.com' + '/bar?' + 
      '&title=%(title)s' + 
      '&start=' + start + 
      '&num=%(num)s' 
    print(QUERY) 
    start += 20 
İlgili konular