Как принять командную строку args заканчивающийся в обратной косой черте

Используйте абстрактный класс, если Вы хотите обеспечить некоторые базовые внедрения.

15
задан Community 23 May 2017 в 12:25
поделиться

5 ответов

Вероятно, оболочка обрабатывает \ как escape-символ и таким образом экранирует этот символ. Таким образом, оболочка отправляет \ " как " (потому что думает, что вы пытаетесь избежать двойных кавычек). Решение состоит в том, чтобы избежать escape-символа, например: $ python args.py "hello \ world \\" .

12
ответ дан 1 December 2019 в 02:20
поделиться

Обратная косая черта «экранирует» следующий за ней символ. Это означает, что закрывающие кавычки становятся частью аргумента и фактически не завершают строку.

Это поведение оболочки, которую вы используете (предположительно, bash или аналогичной), а не Python (хотя вы можете управляющие символы в строках Python тоже).

Решение состоит в том, чтобы избежать обратной косой черты:

python args.py "hello\world\\"

Ваш скрипт Python должен тогда работать так, как вы ожидаете.

2
ответ дан 1 December 2019 в 02:20
поделиться

Обратная косая черта ( \ ) экранирует ". Вот и все. Это , как это должно работать .

1
ответ дан 1 December 2019 в 02:20
поделиться

Если это работает в Windows, значит, вы не используете стандартную командную строку Windows (или оболочку). Это должно быть bash. Командная строка Windows не рассматривает обратную косую черту как escape-символ (поскольку это разделитель пути к файлу).

Дополнительная мелочь: символ кавычек в командной строке Windows - каретка: ^

1
ответ дан 1 December 2019 в 02:20
поделиться

Правила синтаксического анализа параметров Microsoft

Это правила синтаксического анализа командной строки, переданной CreateProcess () программе, написанной на C / C ++:

  1. Параметры всегда разделяются пробел или табуляция (несколько пробелов / табуляции OK)
  2. Если параметр не содержит любые пробелы, табуляции или двойные кавычки, тогда все персонажи в параметр принимаются как есть (там нет необходимости заключать параметр в двойных кавычках).
  3. Заключите пробелы и табуляции в двойные цитируемая часть
  4. Часть, заключенная в двойные кавычки, может быть где угодно внутри параметра
  5. 2n обратных косых черт, за которыми следует " произвести n обратных косых черт + начало / конец часть в двойных кавычках
  6. 2n + 1 обратная косая черта, за которыми следует " произвести n обратных косых черт + буквальный кавычка
  7. n обратных косых черт, за которыми не следует кавычки дают n обратных косых черт
  8. Если после закрытия сразу на другой ", 2-й" принимается буквально и добавляется к параметр (Это недокументированное правило.)

Подробное и четкое описание см. в http://www.daviddeley.com/autohotkey/parameters/parameters.htm#WINCRULESDOC

6
ответ дан 1 December 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: