我遇到了一个小项目的问题,我试图从网站上下载大量数据来存储它们并在以后处理它们,但是我需要对它们做一些小改动才能让他们工作。
我目前正在使用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')
这不起作用,因为他既不会将gz
或gzip
视为有效编码。
我认为gzip
背后的数据是utf-8,但如果我尝试使用utf-8
作为编码参数,它也不起作用。
有人会知道如何让它读取文件吗?
Ps:我不确定它对这个问题是否有用,但这是我在下载文件时对文件所做的操作:
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'))
答案 0 :(得分:1)
例如:
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()