Modify SNPs and gene annotations for your genome assembly of interest. This example shows how one might do this for hg19, for instance:
Download SNPs and convert to BED:
$ wget -qO- ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606_b151_GRCh37p13/VCF/common_all_20180423.vcf.gz \
| gunzip -c \
| convert2bed --input=vcf --output=bed --sort-tmpdir=${PWD} - \
> hg19.snp151.bed
Filter this BED file for entries of interest:
$ grep -wFf snps-of-interest.txt hg19.snp151.bed | cut -f1-6 > hg19.snp151.filtered.bed6
Download gene annotations and convert to BED:
$ wget -O - ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_19/gencode.v19.annotation.gtf.gz \
| gunzip -c \
| awk '($3 == "gene")' \
| gtf2bed \
> gencode.v19.genes.bed
Note: In the future, newer versions of Gencode annotations may be available for your reference assembly. Always check their site to confirm what is most recent.
Map genes to SNPs:
$ bedmap --echo --echo-map-id hg19.snp151.filtered.bed6 gencode.v19.genes.bed > snps_with_associated_gene_names.bed
A list of genes that overlap a SNP of interest will be in the seventh column of the output.
If this must be done within Python, you could use something like subprocess.call(...), where ... includes commands wrapped in bash -c.
I don't recommend this because of the need to escape quote marks and deal with Python's quirks in running command-line tasks, which makes a Python-based approach very difficult to set up and maintain. I'd suggest learning some basic bash scripting to make this easy and fast.