如何从批处理文件下载文件?

时间:2018-04-10 11:00:33

标签: python python-3.x wget

我有一些文件包含每行一个网址,例如

...

我尝试编码:

import wget

with open ("5074_url.txt", encoding='utf-8', mode = 'r') as f:
    for line in list(f): # OR f.readlines()
        filename = wget.download(line)
        print (filename)

但提出错误消息:

Traceback (most recent call last):
  File ".\Geturl2.py\", line 33, in <module>
    filename = wget.download(line)
  File "C:\Program Files (x86)\Python\lib\site-packages\wget.py", line 506, in download
    (fd, tmpfile) = tempfile.mkstemp(".tmp", prefix=prefix, dir=".")
  File "C:\Program Files (x86)\Python\lib\tempfile.py", line 342, in mkstemp
    return _mkstemp_inner(dir, prefix, suffix, flags, output_type)
  File "C:\Program Files (x86)\Python\lib\tempfile.py", line 260, in _mkstemp_inner
    fd = _os.open(file, flags, 0o600)
OSError: [Errno 22] Invalid argument: '.\\page-1.jpg\ngjf6wrvy.tmp'

\ ngjf6wrvy.tmp 这是什么?文件中没有这个,我确定。

我在Windows 10上使用Python 3.6.5

我知道它可以使用urllib.request.urlretrieve(url, filename), 但它有文件名选项。我不想改变文件名。 那么如何不更改文件名?

[解决]

import wget

with open ("5074_url.txt", encoding='utf-8', mode = 'r') as f:
    for url in f.readlines():
        filename = wget.download(url.strip())
        print (filename)

非常感谢你的帮助!!!

1 个答案:

答案 0 :(得分:1)

我不知道你究竟要做什么,但这里有一个请求的例子:

#!/usr/bin/env python
import os

import requests


with open('test.txt', 'r') as f:
    for url in f.readlines():
        r = requests.get(url.strip())
        print(r)

这将“下载”test.txt中包含的每个URL并存储在内存中。变量r包含Response object