使用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之间的关系禁止访问磁盘上的文件。这是没人能解决的另一个问题。
答案 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接收字符串,而您传递的数据是字节。