Convert gene name to uniprot ID
ID mapping
This is called ID mapping. It used to be a headache as programmatic access was the only real way, but it is pretty trivial these days.
As mentioned in the comments, by far the most popular and easy method is to use Uniprot's list uploader for mapping. The corresponding publication can be found here. You must convert from Gene name to Uniprot KB ID
Programmatic access
The Uniprot web user interface will work for thousands of IDs, but is like to result in errors for queries exceeding 10,000 IDs. In that case, programmatic queries are probably better. I've slightly modified this from the Uniprot docs so that the IDs are queried 1 at a time to avoid any errors in exceeding query size. The python code would be:
import urllib,urllib2

list_to_convert = [&quot;CHRNB2&quot;, &quot;EGR2&quot;, &quot;GCK&quot;, &quot;KRT14&quot;, &quot;LMNA&quot;, &quot;FGF3&quot;, &quot;TK2&quot;, &quot;ABCC8&quot;]
url = 'http://www.uniprot.org/mapping/'

print &quot;From To&quot;
for i in list_to_convert:
    params = {
    'from':'GENENAME',
    'to':'ACC',
    'format':'tab',
    'query':i
    }

    data = urllib.urlencode(params)
    request = urllib2.Request(url, data)
    contact = &quot;&quot; # Please set your email address here.
    request.add_header('User-Agent', 'Python %s' % contact)
    response = urllib2.urlopen(request)
    page = response.read(200000)
    print page.splitlines()[1] #Ignores the header line returned by uniprot

The output from this looks like:
From    To
CHRNB2  A0A096MXS8
EGR2    A0A096P554
GCK     A0A021WXA1
KRT14   A0A024R1X6
LMNA    A0A096MQV4
FGF3    A0A096NXI3
TK2     A0A096NJ58
ABCC8   A0A088S7J5