Improved, skipping the zip to avoid trying to write it into itself:
import os
import glob
import zipfile
def zipshape(folder, name):
os.chdir(folder)
zipname = name + ".zip"
flist = glob.glob(name + ".*")
with zipfile.ZipFile(zipname, "w") as newzip:
for ff in flist:
if ff[-4:] != "lock" and ff != zipname:
newzip.write(ff)
return os.path.join(folder, zipname)