当我将-P
或-O
单独与wget
一起使用时,所有的工作都与广告一样。
$: wget -P "test" http://www.google.com/intl/en_com/images/srpr/logo3w.png
Saving to: `test/logo3w.png'
是的。
$: wget -O "google.png" http://www.google.com/intl/en_com/images/srpr/logo3w.png
2012-01-23 21:47:33 (1.20 MB/s) - `google.png' saved [7007/7007]
然而,结合这两种情况会导致wget
忽略-P
。
$: wget -P "test" -O "google.png" http://www.google.com/intl/en_com/images/srpr/logo3w.png
2012-01-23 21:47:51 (5.87 MB/s) - `google.png' saved [7007/7007]
我为目录(由URL的最后一个块生成)和文件名(通过计数循环生成)设置了一个变量,使得http://www.google.com/aaa/bbb/ccc
产生file
=/directory/filename
,或者,对于项1,/ccc/000.jpg
将此替换为代码时:Popen(['wget', '-O', file, theImg], stdout=PIPE, stderr=STDOUT)
wget
静默失败(在循环的每次迭代中)。
当我打开调试-d
和日志记录-a log.log
时,每次迭代都会打印DEBUG output created by Wget 1.13.4 on darwin10.8.0.
当我删除-O
和file
时,操作将正常进行。
我的问题是:
有办法
A) 在wget
(首选)或
中同时指定-P
和-O
B) 在包含/
字符的-O
中插入一个不会导致失败的字符串?
任何帮助都将不胜感激。
wget.download(..)的文档:
使用以下调用将文件下载到具有自定义文件名的特定目录(已存在):
如果您希望函数调用抽象掉目录创建(如果已经不存在),请使用:
这一行来自@Jaydev的代码实际上工作得非常出色:
wget.download(url, path_to_output_file)
你应该把
dir/000.jpg
传递给wget
的-O
:从你的问题中还不完全清楚你是否已经做了类似的事情,但是如果你做了而且仍然失败了,我可以想到两个原因:
-O
的参数包含一个前导/
,使wget
失败,因为它没有在/
(根目录)中随机创建目录的权限。您要写入的目录
wget
不存在。您可以通过首先在Python标准库中使用os.mkdir
创建它来确保它存在。您还可以尝试从
Popen
调用中删除参数stdout=
和stderr=
,以便可以直接看到错误,或者使用Python打印错误。相关问题 更多 >
编程相关推荐