plz.py: Adjust for .xlsx
This commit is contained in:
17
data/plz.py
17
data/plz.py
@ -5,7 +5,7 @@ from typing import List, Tuple, Callable
|
|||||||
import argparse
|
import argparse
|
||||||
import requests
|
import requests
|
||||||
import re
|
import re
|
||||||
import xlrd
|
import openpyxl
|
||||||
import tempfile
|
import tempfile
|
||||||
import os
|
import os
|
||||||
import zipfile
|
import zipfile
|
||||||
@ -92,7 +92,7 @@ def get_plz_url(button: re.Pattern) -> str:
|
|||||||
def download_excel(url: str, transform: Callable[[List[str]], Tuple]) -> List:
|
def download_excel(url: str, transform: Callable[[List[str]], Tuple]) -> List:
|
||||||
f_name = None
|
f_name = None
|
||||||
try:
|
try:
|
||||||
f = tempfile.NamedTemporaryFile(delete=False)
|
f = tempfile.NamedTemporaryFile(suffix='.xlsx', delete=False)
|
||||||
with requests.get(url, stream=True, headers={'User-Agent': 'Mozilla/5.0'}) as r:
|
with requests.get(url, stream=True, headers={'User-Agent': 'Mozilla/5.0'}) as r:
|
||||||
if r.status_code != 200:
|
if r.status_code != 200:
|
||||||
raise RuntimeError(f'Unexpected response: {r.status_code} {r.reason}')
|
raise RuntimeError(f'Unexpected response: {r.status_code} {r.reason}')
|
||||||
@ -102,11 +102,14 @@ def download_excel(url: str, transform: Callable[[List[str]], Tuple]) -> List:
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
rows = []
|
rows = []
|
||||||
wb = xlrd.open_workbook(f_name)
|
wb = openpyxl.open(f_name)
|
||||||
sheet = wb.sheet_by_index(0)
|
sheet = wb.worksheets[0]
|
||||||
for r in range(1, sheet.nrows):
|
first = True
|
||||||
row = sheet.row_values(r)
|
for row in sheet.rows:
|
||||||
rows.append(transform(row))
|
if first:
|
||||||
|
first = False
|
||||||
|
continue
|
||||||
|
rows.append(transform([r.value for r in row]))
|
||||||
return rows
|
return rows
|
||||||
finally:
|
finally:
|
||||||
if f_name is not None:
|
if f_name is not None:
|
||||||
|
Reference in New Issue
Block a user