Синтаксическая ошибка Vexing Python

Я пишу скрипт на Python, используя версию 2.7.3. В скрипте строка

toolsDir = 'tools/'

Когда я запускаю это в терминале, я получаю SyntaxError: invalid syntax на последнем символе в строке 'r'. Я попытался переименовать строку, используя "в отличие от". Если я на самом деле захожу в python через bash и объявляю строку в одну строку и печатать ее, я не получаю ошибки.

Я проверил кодировку через file -i update.py и я получаю text/x-python; charset=us-ascii

Я использовал TextWrangler, Nano и LeafPad в качестве текстовых редакторов.

У меня такое ощущение, что это может быть что-то с кодировкой одного из редакторов. Я уже запускал этот скрипт без ошибок.

Любой совет будет принята с благодарностью.

3 ответа

Решение

Ошибка была, конечно, глупой.

В одном из моих импортов я использую try: без закрытия или перехвата ошибки. Pylint не уловил это, и сообщение об ошибке не указывало на это.

Если у кого-то в будущем есть эта тройка, проверьте весь вводный код на наличие синтаксических ошибок.

Строка 'tools/', toolsDir переменная Конечно, вы свободны в использовании другой терминологии, но в итоге вы будете путать людей, пытающихся помочь вам. Единственный r в этой строке последний символ имени переменной, поэтому я предполагаю, что это место ошибки.

Скорее всего, вам удалось ввести пространство фиксированной ширины (код символа 0xA0) вместо обычного пространства. Попробуйте удалить SP=SP (все три символа) и перепечатать их.

Попробуйте запустить код через Pylint.

Возможно, у вас есть синтаксическая ошибка в соседней строке до этой. Попробуйте закомментировать эту строку и посмотрите, не исчезнет ли ошибка.

У вас может быть ошибка с пробелами, не забывайте подсчет пробелов в Python. Если вы где-то в файле перепутали символы табуляции и пробелы, он может отбросить проверку синтаксиса на несколько строк.

Если вы скопировали и вставили в нее строки из любого другого источника, возможно, вы скопировали пробел, который не соответствует принятому соглашению.

Другие вопросы по тегам