以下示例使用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之间的关系禁止访问磁盘上的文件。这是没人能解决的另一个问题。
最佳答案
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接收字符串。
关于python - 从URL读取shapefile的zipfile时,初始值错误不是str,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55110509/