【发布时间】:2017-06-22 16:01:23
【问题描述】:
我想要这样的电话:
pv -ptebar compressed.csv.gz | python my_script.py
在my_script.py 内部,我想解压缩compressed.csv.gz 并使用Python csv 解析器对其进行解析。我希望是这样的:
import csv
import gzip
import sys
with gzip.open(fileobj=sys.stdin, mode='rt') as f:
reader = csv.reader(f)
print(next(reader))
print(next(reader))
print(next(reader))
当然它不起作用,因为gzip.open 没有fileobj 参数。您能否提供一些解决此问题的工作示例?
更新
Traceback (most recent call last):
File "my_script.py", line 8, in <module>
print(next(reader))
File "/usr/lib/python3.5/gzip.py", line 287, in read1
return self._buffer.read1(size)
File "/usr/lib/python3.5/_compression.py", line 68, in readinto
data = self.read(len(byte_view))
File "/usr/lib/python3.5/gzip.py", line 461, in read
if not self._read_gzip_header():
File "/usr/lib/python3.5/gzip.py", line 404, in _read_gzip_header
magic = self._fp.read(2)
File "/usr/lib/python3.5/gzip.py", line 91, in read
self.file.read(size-self._length+read)
File "/usr/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
上面的回溯是在应用@Rawing 建议之后出现的。
【问题讨论】:
-
您是否尝试转储一些
f.readline()结果以查看解压后的流是什么样的?
标签: python python-3.x file unix gzip