Python 从URL读取shapefile的zipfile时,初始值不是str的错误
使用Python3.5,以下示例用于从URL读取shapefile zipfile并更新P3.5。代码如下。我看过其他案例,并尝试追加.decode('utf-8'),但这没有帮助Python 从URL读取shapefile的zipfile时,初始值不是str的错误,python,macos,jupyter-notebook,zipfile,stringio,Python,Macos,Jupyter Notebook,Zipfile,Stringio,使用Python3.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.
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:初始值必须是str或None,而不是bytes
如果我输入.decode('utf-8'),ala:
我得到以下信息:
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接收一个字符串,而您传递的数据是字节。我做了更改,它似乎可以工作,但我突然转向下一个问题。他们可能有关联。我要分开邮寄。
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")