Синтаксическая ошибка 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. Если вы где-то в файле перепутали символы табуляции и пробелы, он может отбросить проверку синтаксиса на несколько строк.
Если вы скопировали и вставили в нее строки из любого другого источника, возможно, вы скопировали пробел, который не соответствует принятому соглашению.