繁体   English   中英

从url检索数据而不创建文件

[英]Retrieve data from url without creating a file

我有一个小项目时遇到了问题,我正在尝试从网站上下载大量数据以存储它们并稍后再使用它们,但是我需要对其进行一些细微改动才能使其正常工作。

我当前正在使用urllib.request.urlretrieve(url, folder)下载数据,然后打开它,进行必要的更改并再次保存。

但是,感觉像是不必要的读写操作,因为我只是将数据保存在磁盘上以再次打开它,尤其是当我最终下载大量数据时。

我尝试使用对此不太了解的请求模块,但是由于数据最初被压缩为gzip文件,因此遇到了麻烦。

download = requests.get("https://tickdata.fxcorporate.com/EURUSD/2015/1.csv.gz", stream=True) 
decoded_content = download.content.decode('gzip')

这行不通,因为他也不认为gzgzip是有效的编码。 我认为gzip背后的gzip位于utf-8中,但是如果我尝试将utf-8用作编码参数,那么它也不起作用。

有人对如何使其读取文件有想法吗?

附:我不确定它是否对这个问题有用,但这是我下载文件后对文件执行的操作:

pair = 'EUR_USD'

for year in range(2015,2016):
    for week in range(1,53):

        ref= 'E:\Finance_Data\\' + pair + '\Tick\\' + str(year) + '\\' + str(week) + '.csv.gz'
        dest = 'E:\Finance_Data\\' + pair + '\Tick\\' + str(year) + '\\' + str(week) + '_clean.csv'

        with gzip.open(ref, 'rb') as f:
            data = f.read()

        with gzip.open(dest, 'wb') as f:
            f.write(data.decode('utf-8').replace('\x00', '').encode('utf-8'))

与软件包io.BytesIO一起使用

例如:

import requests
from io import BytesIO
import gzip

a = requests.get('https://tickdata.fxcorporate.com/EURUSD/2015/1.csv.gz', stream=True)
f = gzip.open(BytesIO(a.content), mode="rt")
print(f.read())
f.close()

暂无
暂无

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

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