从URL读取shapefile的zipfile时,错误的初始值不是str

时间:2019-03-11 21:15:13

标签: python macos jupyter-notebook zipfile stringio

使用Python 3.5,以下示例用于从URL读取shapefile zipfile并更新为P3.5。代码如下。我查看了其他情况,并尝试附加.decode('utf-8'),但这无济于事。

    dls = "https://github.com/ItsMeLarry/Coursera_Capstone/raw/master/tl_2010_25009_tract00%202.zip"
print('Downloading shapefile...')
lynntracts = ZipFile(io.StringIO(urllib.request.urlopen(dls).read()))
print("Done")

错误代码是: TypeError:initial_value必须为str或None,不能为字节

如果我输入.decode('utf-8'),ala:

lynntracts = ZipFile(io.StringIO(urllib.request.urlopen(dls).read().decode('utf-8')))

我收到以下消息: UnicodeDecodeError:“ utf-8”编解码器无法解码位置57处的字节0xa4:无效的起始字节

将decode()放在io.StringIO调用的外部不会对原始问题产生影响。我迷路了。我可以尝试什么或需要学习什么?谢谢。

此外,我正在尝试实现一个不会在磁盘上创建文件的过程(临时文件或其他文件),因为Jupyter和Macos之间的关系禁止访问磁盘上的文件。这是没人能解决的另一个问题。

1 个答案:

答案 0 :(得分:1)

import urllib.request
import io
from zipfile import ZipFile

dls = "https://github.com/ItsMeLarry/Coursera_Capstone/raw/master/tl_2010_25009_tract00%202.zip"
print('Downloading shapefile...')
lynntracts = ZipFile(io.BytesIO(urllib.request.urlopen(dls).read())) -----> Edited Line
print("Done")

改为使用BytesIO。

StringIO接收字符串,而您传递的数据是字节。