2014-01-03 5 views
0

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

networkPath = input("Drop Path: ") 
print("test") # <- will never get here 

SyntaxError: неожиданный характер после того, как символ продолжения строки

Кроме того, если пользователь помещает свой вклад в кавычки не возникает эта ошибка. Как видно здесь: syntaxerror: unexpected character after line continuation character in python

Я не хочу, чтобы пользователь должен был обернуть свой ввод в кавычки. Причина в том, что они будут размещать длинные сетевые пути, такие как: \ oursite.com \ someplace \ global \ Communications \ News \ Карта сайта

Теперь я знаю, что вы думаете: «Почему они не могут просто заключить в кавычки ?» Причиной является то, что они будут копировать и вставлять этот сетевой путь из созданного письма.

Заранее благодарен!

Edit: Я хотел бы отметить, что это не удается в окне командной строки, а не в pyscripter

+0

Каковы некоторые входы, которые не работают на вашем скрипте? Один, ваш фрагмент работает просто отлично (я полагаю, вы используете Python 3?) – MattDMo

+0

В качестве побочного примечания даже заставить пользователей обернуть свои строки в кавычки не помогло бы - как только кто-то будет вводить какой-то путь, \ foo \ bar "', вы не получите обратную косую черту, а f и b, но символы формы и возврата. – abarnert

+0

@MattDMo например: \\ oursite.com \ someplace \ global \ Communications \ News \ Карта сайта –

ответ

2

корня проблема здесь почти наверняка, что вы изучаете Python 3, но при попытке использовать интерпретатор Python 2.7, чтобы сделать это , Не делай этого. Пойдите download Python 3.3 или позже и используйте это.

Но если вы на самом деле намеренно пытается использовать Python 2.7, читайте дальше:


I am sure that this issue lies with input().

Вы правы. Как the documentation говорит, input является:

Equivalent to eval(raw_input(prompt)) .

Другими словами, независимо от типа пользователя в получает передается eval. Это означает, что он оценивается как код Python. И, если пользователь не набирает что-то, что является допустимым кодом Python (например, строка в кавычках), вы получите SyntaxError.

Решение здесь прост: не используйте input, используйте raw_input.


(Обратите внимание, что Python 3-х input такая же, как Python 2-х raw_input, и он не имеет аналогов в Python 2-х input. Поэтому я считаю, что вы используете неправильную версию Python.)

+0

Вы правы, я использую неправильную версию! поэтому причина, по которой он работает в Pyscripter, заключается в том, что он фактически использует 3.x, в то время как что-то бегало из командной строки, работает 2,7! –

+0

@LokiIkol: В системах, отличных от Windows, обычно это вопрос запуска 'python3' вместо' python'. В Windows, если ваш 3.x равен 3,3 (или если вы установили инструмент запуска для старых версий), см. [PEP 397] (http://www.python.org/dev/peps/pep-0397/) для деталей. 3.4 даст вам более простой вариант, но он все еще находится в бета-версии. Или вы можете использовать ['virtualenv'] (https://pypi.python.org/pypi/virtualenv), чтобы облегчить вашу жизнь. Или, если вам действительно не нужен этот Python 2.7, просто удалите его. – abarnert

1

Не используйте для этого вход(); используйте raw_input(). Input() вызывает eval() в тексте, который вам не нужен или нужен, и который отвечает за эту ошибку.

+0

Обратите внимание, что это верно только при использовании Python 2.x, в Py3 'input()' делает то, что OP хочет сделать – MattDMo

Смежные вопросы