У вас тут куча разных подходов к доступу к файлам. Когда вы делаете:
result=urlfetch.fetch(os.path.join(os.path.dirname(__file__),'words.txt'))
путь, который вы создаете для 'words.txt', будет правильным путем для файла, который вы загрузили в тот же каталог, что и скрипт-обработчик, если вы не объявили его частью статических_файлов, хотя он и отображается из вашей конфигурации, что вы хотите, чтобы путь был больше похож на:
os.path.join(os.path.dirname(__file__), 'static', 'words.txt')
Однако у вас есть две проблемы здесь. Во-первых, static_files передаются из процесса, отличного от вашего обработчика, и (могут) загружаться на совершенно другой сервер. У вас не будет доступа к файловой системе (я полагаю, именно поэтому вы используете urlfetch.) Путь, который вы создаете, предназначен для доступа к файловой системе, а не для доступа к urlfetch. Чтобы использовать urlfetch в рабочей среде, вам нужно будет использовать сетевой URL-адрес, как предлагает @brianmichelich, однако имейте в виду, что это не будет работать при использовании сервера разработки, который может обрабатывать только один запрос за раз.
Однако, если вы удалите статические директивы из вашего app.yaml, вы сможете использовать этот путь как часть обычного блока with / open.