2

これはPythonコードの簡単なスニペットです

#!/usr/bin/python
import sys
print sys.argv

ここで、これを test.py として保存し、実行可能にして、次のように実行します。

./test.py abc['./test.py','abc']それは完全に賢明な印刷をします。

しかし、私がそれを実行すると

./test.py http://www.google.co.in/imgres?hl=en&sa=X&biw=1600&bih=729&tbm=isch&prmd=imvns&tbnid=5FSY1KAB4T48vM:&imgrefurl=http://www.freeganita.com/en/mdlife/4_4.htm&docid=x4Z8mIMpa8FS9M&imgurl=http://www.freeganita.com/en/mdlife/4_4_files/image007.jpg&w=581&h=260&ei=MFaGUMnDHYXSrQfp5YGoDA&zoom=1&iact=hc&vpx=439&vpy=132&dur=1059&hovh=150&hovw=336&tx=71&ty=171&sig=100962344983266552479&page=1&tbnh=123&tbnw=276&start=0&ndsp=28&ved=1t:429,r:2,s:0,i:89

それは印刷します

[1] 14812
[2] 14813
[3] 14814
[4] 14815
[5] 14816
[6] 14817
[7] 14818
[8] 14819
[9] 14820
[10] 14821
[11] 14822
[12] 14823
[13] 14824
[14] 14825
[15] 14826
[16] 14827
[17] 14828
[18] 14829
[19] 14830
[20] 14831
[21] 14832
[22] 14833
[23] 14834
[24] 14835
[25] 14836
[26] 14837
[27] 14838
[28] 14839
[2]   Done                    sa=X
[3]   Done                    biw=1600
[4]   Done                    bih=729
[5]   Done                    tbm=isch
[6]   Done                    prmd=imvns
[7]   Done                    tbnid=5FSY1KAB4T48vM:
[8]   Done                    imgrefurl=http://www.freeganita.com/en/mdlife/4_4.htm
[9]   Done                    docid=x4Z8mIMpa8FS9M
[10]   Done                    imgurl=http://www.freeganita.com/en/mdlife/4_4_files/image007.jpg
[11]   Done                    w=581
[15]   Done                    iact=hc
[18]   Done                    dur=1059
[20]   Done                    hovw=336
[21]   Done                    tx=71
[22]   Done                    ty=171
[24]   Done                    page=1
[25]   Done                    tbnh=123
jpm@andromeda:~/test$ ['./test.py', 'http://www.google.co.in/imgres?hl=en']

誰かがこれを説明できますか?

4

2 に答える 2

7

あなたはあなたのURLを引用したりエスケープしたりしていないので、引数のシェル解釈からあらゆる種類のものを取得しています. 試す

./test.py 'http://www.google.co.in/imgres?hl=en&sa=X&biw=1600&bih=729&tbm=isch&prmd=imvns&tbnid=5FSY1KAB4T48vM:&imgrefurl=http://www.freeganita.com/en/mdlife/4_4.htm&docid=x4Z8mIMpa8FS9M&imgurl=http://www.freeganita.com/en/mdlife/4_4_files/image007.jpg&w=581&h=260&ei=MFaGUMnDHYXSrQfp5YGoDA&zoom=1&iact=hc&vpx=439&vpy=132&dur=1059&hovh=150&hovw=336&tx=71&ty=171&sig=100962344983266552479&page=1&tbnh=123&tbnw=276&start=0&ndsp=28&ved=1t:429,r:2,s:0,i:89'
于 2012-10-23T09:03:43.977 に答える
3

これを Linux コマンドラインで実行すると仮定してもよろしいですか? この場合、&はバックグラウンド プロセスをフォークする特別な制御文字です。

それを防ぐには、引用符を使用します。

./test.py "http://www.google.co.in/imgres?hl=en&sa=X&biw=1600&bih=729" # etc
于 2012-10-23T09:03:58.370 に答える