是否可以从URL读取仅包含.dta
文件的.zip文件?
例如,https://www.federalreserve.gov/econres/files/scfp2016s.zip包含一个文件:rscfp2016.dta
,但是pandas.read_stata
不适用于该文件:
import pandas as pd
pd.read_stata('https://www.federalreserve.gov/econres/files/scfp2016s.zip')
如果zip仅包含csv,则ValueError:给定的Stata文件的版本不是104、105、108、111(Stata 7SE),113(Stata 8/9),114(Stata 10/11),115(Stata 12),117(Stata 13) )或118(Stata 14)
read_csv
支持通过compression
参数(默认情况下推断压缩)读取压缩文件。 read_stata
缺少此选项。
我可以通过下载并解压缩文件,然后读取它来做到这一点,但这很麻烦。
!wget https://www.federalreserve.gov/econres/files/scfp2016s.zip
!unzip scfp2016s.zip
df = pd.read_stata('rscfp2016.dta')
还有更好的方法吗?
答案 0 :(得分:1)
read_stata
接受类似文件的对象,因此您可以执行以下操作:
import pandas as pd
from io import BytesIO
from zipfile import ZipFile
from urllib.request import urlopen
url = 'https://www.federalreserve.gov/econres/files/scfp2016s.zip'
with urlopen(url) as request:
data = BytesIO(request.read())
with ZipFile(data) as archive:
with archive.open(archive.namelist()[0]) as stata:
df = pd.read_stata(stata)
答案 1 :(得分:1)
您可以尝试以下请求:
glfw.make_context_current(window)