我尝试使用lzma从www.dukascopy.com解压缩文件(文件似乎是二进制的,它的.bi5格式)。它是EUR / USD货币对的外汇数据。对不起,但我对如何阅读二进制文件并不是很熟悉。我把它解压缩了吗?如果是这样,我应该如何转换我已解压缩的结果数据。
测试文件: https://dl.dropboxusercontent.com/u/11283578/00h_ticks.bi5
我的测试代码:
import lzma
with open('/Users/me/Downloads/dukascopy_php_scripts_v0.27/EURUSD/2008/05/16/00h_ticks.bi5','rb') as f:
infile = f.read()
decompressor = lzma.LZMADecompressor()
print(lzma.decompress(infile))
打印哪些:
(starting with).....b'\x00\x00\x16\xd4\x00\x02X\xf6\x00\x02X\xe6@\x19\x99\x9a?\xe6ff\x00\x00 (\x00\x02X\xf7\x00\x02X\xe3A\x10\x00\x00@\x19\x99\x9a\x00\x00)c\x00\x02X\xed\x00\x02X\xe8@\xc0\x00\x00@\x9333\x00\x00.\x87\x00\x02X\xe9\x00\x02X\xe4@\x99\x99\x9a@\xc0\x00\x00\x00\x00.\xfa\x00\x02X\xe8\x00\x02X\xe3A\x10\x00\x00@\x19\x99\x9a\x00\x000N\x00\x02X\xe8\x00\x02X\xe3Aq\x99\x9a@\x99\x99\x9a\x00\x000\xc0\x00\x02X\xee\x00\x02X\xe4@\xc0\x00\x00?\xe6ff\x00\x001<\x00\x02X\xf4\x00\x02X\xeaA\x14\xcc\xcd@\x19\x99\x9a\x00\x001\xb3\x00\x02X\xf9\x00\x02X\xef@\xac\xcc\xcd@\xe6ff\x00\x002&\x00\x02X\xfb\x00\x02X\xf6@\x99\x99\x9a@\x19\x99\x9a\x00\x00T\xd7\x00\x02Y\x03\x00\x02X\xef@\x19\x99\x9a?\x99\x99\x9a\x00\x00U\x1b\x00\x02X\xfa\x00\x02X\xf5A\x14\xcc\xcd?\x80\x00\x00\x00\x00U?\x00\x02X\xf6\x00\x02X\xf1@\x99\x99\x9aAS33\x00\x00Uc\x00\x02X\xf3\x00\x02X\xe9@\x99\x99\x9a@\xac\xcc\xcd\x00\x00U\xef\x00\x02X\xe8\x00\x02X\xde@\x86ffA#33\x00\x00V\x13\x00\x02X\xdd\ ......(ending with).....
\x00\x02Y+\x00\x02Y!?\x80\x00\x00@\x99\x99\x9a'
答案 0 :(得分:1)
您可以迭代解压缩文件,而无需将其完全读入内存,如下所示:
示例:强>
#!/usr/bin/env python
URL = "https://dl.dropboxusercontent.com/u/11283578/00h_ticks.bi5"
from requests import get
from lzma import LZMADecompressor
decompressor = LZMADecompressor()
response = get(URL, stream=True)
with open("foo.bin", "wb") as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
result = decompressor.decompress(chunk)
if result != b"":
f.write(result)
然后,我们可以通过将文件下载和解压缩与lzma
命令行工具进行比较来确认并验证输出:
<强>输出:强>
$ python foo.py
$ curl -q -o - https://dl.dropboxusercontent.com/u/11283578/00h_ticks.bi5 | lzma -d - > test.bin
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11600 100 11600 0 0 7509 0 0:00:01 0:00:01 --:--:-- 7508
$ shasum foo.bin
c36d2314e43f3c71ad85e75e748b4f54edc8d74a foo.bin
$ shasum test.bin
c36d2314e43f3c71ad85e75e748b4f54edc8d74a test.bin
由于我没有与您同一个文件的本地访问权限,也没有相同的环境,上面的示例会下载您放在Dropbox上的文件并使用Python 3.4和lzma.LZMADecompressor
迭代解压缩库/类。