如何使用变量在Python中使用wget下载?

时间:2013-05-30 19:31:40

标签: python bash wget

我需要做这样的事情,但是用Python而不是Bash:

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我有几个变种。

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

如何将主题标记为已解决?

再次感谢。

6 个答案:

答案 0 :(得分:3)

尝试

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

使用%s代替,

答案 1 :(得分:1)

可以在Bash中增加。你必须做类似的事情:

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中不起作用。

答案 2 :(得分:1)

您可以使用python而不使用urllib

为每个文件调用shell
import urllib, os

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

答案 3 :(得分:0)

试试这个

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

答案 4 :(得分: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

答案 5 :(得分:0)

你也可以指定python来询问你传递给wget的网址

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

代替'mp3'使用您想要下载的任何格式。