Então, basicamente, o que isso está dizendo, no Python fala, é que sua tentativa de abrir o shapefile falhou. Quando algo como osgeo.ogr.Open () falha, geralmente retorna None, que, no seu caso, é atribuído à sua variável "shapefile". Quando você tenta acessar o shapefile posteriormente, ele informa que o shapefile é "NoneType" (em vez do tipo de objeto que osgeo teria criado) e que os objetos NoneType não possuem o método GetLayerCount.
Como você conserta isso? Primeiro, teste se há erros no seu código - ele fornecerá mensagens melhores. Algo como:
import osgeo
import osgeo.ogr
try:
shapefile = osgeo.ogr.Open("tl_2009_us_state.shp")
if shapefile: # checks to see if shapefile was successfully defined
numLayers = shapefile.GetLayerCount()
else: # if it's not successfully defined
print "Couldn't load shapefile"
except: # Seems redundant, but if an exception is raised in the Open() call,
# # you get a message
print "Exception raised during shapefile loading"
# if you want to see the full stacktrace - like you are currently getting,
# then you can add the following:
raise
Portanto, agora precisamos responder à pergunta de por que o seu shapefile não está carregando. Meu palpite é que você precisa fornecer o caminho completo (por exemplo, "C: \ Users ... \ tl_2009_us_state.shp") porque o osgeo não consegue encontrar seu shapefile com o caminho atualmente fornecido. Isso é um palpite.