2013-05-30 71 views
0

我需要做這樣的事情,但在Python,而不是擊:如何使用變量在Python中使用wget進行下載?

i=1 
while [ $i <= 10 ] ; do 
    wget http://somewebsite.net/shared/fshared_$i.7z 
    $i = $i + 1 
done 

在Python我試着用下面的:

import urllib, os 
i = 0 
while i <= 3: 
    os.system('wget http://somewebsite.net/shared/fshared_',i,'.7z') 
    i = i + 1 

但它不工作,變量沒有級聯正確(或類似的)。
使用Bash代碼不起作用,顯然在Bash中不能做一些簡單的事情:i = i + 1

任何人都可以幫助我嗎?

已解決! :)

現在我有腳本Bash和Python,實際上與Python我有幾個變種。

感謝所有...非常感謝^ -^

我要怎樣的話題,因爲解決了嗎?再次

感謝。

+0

如果其中一個答案解決了您的問題,您接受它。如果有多個正確的答案,請接受你認爲最好的答案。 –

回答

2

嘗試

os.system('wget http://somewebsite.net/shared/fshared_%s.7z'%i) 

使用%s代替,

+0

使用Python版: 類型錯誤:不能連接「海峽」和「廉政」對象 使用Python V3: 類型錯誤:無法轉換「詮釋」對象隱含str的 和我立即下載線之前就已經提出:STR (i) – user2437965

+0

你忘了刪除'+'和','東西 – maazza

+0

是..固定它.. – karthikr

1

可以增量猛砸。你必須做一些事情,如:

i=3 
((i++)) 
echo $i 

,去年好像應該打印4.所以,你的腳本是:

i=1 
while [ $i -le 10 ] ; do 
    wget http://somewebsite.net/shared/fshared_$i.7z 
    ((i++)) 
done 

編輯:固定碼使用-le而不是<=因爲<=不起作用在bash中。

+0

不錯,與Bash工作正常! – user2437965

+0

爲什麼這會降低投票率? – 2013-06-01 03:24:54

1

您可以使用Python沒有呼喚外殼使用urllib

import urllib, os 

for i in range(4): 
    filename = 'fshared_{}.7z'.format(i) 
    urllib.urlretrieve('http://somewebsite.net/shared/'+filename, filename) 
+0

我曾經嘗試過使用urllib(我不喜歡混合bash和python),但它不起作用,但是您的代碼完美地工作,謝謝。 – user2437965

+0

歡迎您:) –

0

每個文件試試這個

import urllib, os 
i = 0 
while i <= 3: 
    os.system('wget http://somewebsite.net/shared/fshared_%s.7z' % i) 
    i = i + 1 
+0

完美,作品! :) 謝謝! – user2437965

0

要使用級聯解決這個問題,你需要使用+來連接而不是,,因爲當您使用,連接兩個字符串時,它們之間用一個空格字符分隔它們,因爲當您使用+時不會發生這種情況,因爲它「真正」連接字符串。

E.g.:

print('Hello' + 'World' + '!') 
print('Hello', 'Stack', 'Overflow!') 

輸出:

HelloWorld! 
Hello Stack Overflow! 

您的代碼應該是這樣的,現在使用+代替,

#... 
os.system('wget http://somewebsite.net/shared/fshared_' + i + '.7z') 
#...             ^^

Code pasted on Ideone.com

0

你也可以指定蟒問你該網址傳遞給wget

import os 
path = raw_input("enter the url:") 
os.system('wget -r -nd -l1 --no-parent -A mp3 %s'%path) 

代替'mp3'使用任何你想下載的格式。