2013-05-30 72 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'使用任何你想下载的格式。