仅下载1 KB的文件,而不是Python中的整个文件

时间:2019-02-17 06:17:19

标签: python numpy url wget urllib

我尝试使用DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name urllibrequests。这三个都不起作用。

我正在尝试从URL下载300KB wget文件。当我使用.npzwget.download()urllib.request.urlretrieve()下载文件时,不会引发错误requests文件下载。但是,此.npz文件不是300KB。文件大小仅为1 KB。另外,该文件也不可读-当我使用.npz时,会显示错误np.load()

我也确定该URL有效。当我使用浏览器下载文件时,OSError: Failed to interpret file 'x.npz' as a pickle可以正确读取该文件,并且文件大小正确。

非常感谢您的帮助。


编辑1:

要求提供完整的代码。这是代码:

np.load()

我还在urllib中使用了变体:

loadfrom = "http://example.com/dist/x.npz"
savedir = "x.npz"
wget.download(loadfrom, savedir)
data = np.load(savedir)

并请求:

loadfrom = "http://example.com/dist/x.npz"
savedir = "x.npz"
urllib.request.urlretrieve(loadfrom, savedir)
data = np.load(savedir)

在上述条件下,它们都产生相同的结果。

2 个答案:

答案 0 :(得分:0)

请显示完整的代码和用于下载文件的确切行。请记住,您需要使用

r=requests.get("direct_URL_of_your_file.npz").content
        with open("local_file.npz",'wb') as f:
            f.write(r)

还要确保URL是直接下载链接。

答案 1 :(得分:0)

问题是服务器需要javascript才能运行,以确保安全。因此,当我发送请求时,我得到的只是带有“此站点使Java工作正常”的html。我发现在请求期间需要传递一个__test cookie。

This answer进行了详细说明。 This video可能也有帮助。