#-*- coding: utf-8 -*-
import shapefile
from json import dumps

path = "pyshp/shapefiles/blockgroups"
sf = shapefile.Reader(path)

fields = sf.fields[1:]
field_names = [field[0] for field in fields]

buffer = []
for sr in sf.shapeRecords():
   atr = dict(zip(field_names, sr.record))

   geom = sr.shape.__geo_interface__
   buffer.append(dict(type="Feature", geometry=geom, properties=atr)) 

geojson = open("pyshp-demo.geojson", "w")
geojson.write(dumps({"type": "FeatureCollection", "features": buffer}, indent=2, ensure_ascii=False))
geojson.close()