2013-04-04 79 views
1

簡單的問題。將參數從cmd行或bash腳本傳入python腳本

如果我有這樣一行:

 j = json.load(urllib.urlopen("http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q= ***$???*** ")) 

我試圖將參數傳遞到從另一個腳本+ /或命令行現貨。

在bash其簡單,$ 1,$ 2,等等等等

我讀過有關(sys.argv中[1]),並因爲在bash這樣簡單的事情似乎需要這樣的我失去了它python中的詳細內容。我已經試過這樣:

 j = json.load(urllib.urlopen("http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q='(sys.argv[1])'")) 

無濟於事.... 什麼我不理解?

回答

4

在Python中,字符串不是默認插值。嘗試

("http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q='%s'" 
% sys.argv[1]) 
+0

如果我沒有在這裏問過......我怎麼會得到這個珍聞? 背後的理解是什麼......它順利運作,一旦時間結束,我會檢查它。 – sirvon 2013-04-04 15:40:39

+1

@sirvonandrethomas:其他一些語言奇妙地插入字符串的事實並不意味着Python應該這樣做。我認爲'%'實際上在教程中。 – 2013-04-04 15:42:25

+1

@sirvonandrethomas - http://docs.python.org/2/tutorial/interpreter.html#argument-passing和http://docs.python.org/2/tutorial/inputoutput.html#old-string-formatting – 2013-04-04 15:57:08

0

是的,爲了完整,有「新格式」,這是一個有點像Java的格式字符串,並更好一點的工作。

$ python -c 'import sys; print("yojo{0}".format(sys.argv[1]))' mo 
yojomo 

如果你只是想連接字符串,該+運算符重載爲。

print("mystring" + sys.argv[1])