繁体   English   中英

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

[英]How to download with wget in Python using variables?

我需要做这样的事情,但是要用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我有几个变体。

谢谢大家...非常感谢^-^

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

再次感谢。

尝试

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

使用%s代替,

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

您可以使用python,而无需使用urllib调用每个文件的外壳

import urllib, os

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

尝试这个

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

要使用串联解决这个问题,你需要用+来连接,而不是,因为当你使用,连接两个字符串就他们之间的空间字符分隔,当您使用相同的不会发生+ ,因为它“确实”将字符串连接起来。

例如:

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

输出:

HelloWorld!
Hello Stack Overflow!

您的代码现在看起来像这样,使用+代替,

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

代码粘贴在Ideone.com上

您还可以指定python要求您将URL传递给wget

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

代替“ mp3”使用任何您要下载的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM