首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我对python中的wget模块有问题。

我对python中的wget模块有问题。
EN

Stack Overflow用户
提问于 2022-01-16 18:25:33
回答 2查看 241关注 0票数 -1

有人能破解我的密码吗?我也太乞丐了,如果你告诉我如何更有效率地做这件事,而不必为每种文件类型创建不同的函数,我会很高兴的。

(你可以把这段代码看作是上世纪90年代一个研究机构的终端,当时互联网还不太好,所以我想放慢下载速度,让人感觉它真的是90年代了。)

代码语言:javascript
运行
复制
import wget

x = ""

def png_download():
    print("this code is can only download png btw")
    time.sleep(1)
    
    print("enter url")
    command = input('Terminal: ').strip()
    command = x
    
    
    # file url
    remote_url = ("'"+x+"'")
    
    # 
    local_file = 'file.png'
    
    # aksiyon
    wget.download(remote_url, local_file)

while True: #Terminal
    print ("")
    command = input('Terminal: ').strip()
    if command == 'Download_png':
        png_download()
        
    else:
        print("")   

如果运行代码并输入url,就会发生这样的情况:

代码语言:javascript
运行
复制
  File "c:\Dosyalar\Yazılım\Python\Foundation Terminal 14\Terminal Downloader Extension ENG .py", line 28, in <module>
    png_download()
  File "c:\Dosyalar\Yazılım\Python\Foundation Terminal 14\Terminal Downloader Extension ENG .py", line 22, in png_download
    wget.download(remote_url, local_file)
  File "C:\Users\hp\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\wget.py", line 526, in download
    (tmpfile, headers) = ulib.urlretrieve(binurl, tmpfile, callback)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 239, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 214, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 501, in open
    req = Request(fullurl, data)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 320, in __init__
    self.full_url = url
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 346, in full_url
    self._parse()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 375, in _parse
    raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: '%27%27' ```
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-17 08:31:43

ValueError:未知url类型:'%27%27‘

27'字符的(十六进制)代码,这意味着您为wget.download提供的第一个参数是'',这显然不是合法地址。这是因为您将x设置为空字符串(x = ""),但没有对其进行任何更改,然后执行了。

代码语言:javascript
运行
复制
remote_url = ("'"+x+"'")

代码语言:javascript
运行
复制
wget.download(remote_url, local_file)

假设用户总是提供合法的URL,那么您的png_download应该修改为

代码语言:javascript
运行
复制
def png_download():
    print("this code is can only download png btw")
    time.sleep(1)
    
    print("enter url")
    remote_url = input('Terminal: ').strip()
    # 
    local_file = 'file.png'
    
    # aksiyon
    wget.download(remote_url, local_file)
票数 0
EN

Stack Overflow用户

发布于 2022-01-16 18:35:27

用Python下载文件的方法要简单得多:

代码语言:javascript
运行
复制
import os
import requests

def download_file_to(file_url, destination_folder, new_file_name=None):
    if new_file_name:
        file_name = new_file_name
    else:
        file_name = file_url.split("/")[-1]
    r = requests.get(file_url)
    file_path = os.path.join(destination_folder, file_name)
    with open(file_path, "wb") as code:
        code.write(r.content)

此方法将从web (使用requests库)将任何文件下载到指定的文件夹中,如果愿意,可以重命名该文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70732934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档