Строка «????» преобразуется в «данные» в Python

#python #command-line #arguments #sentinel

#python #командная строка #аргументы #sentinel

Вопрос:

При написании небольшого скрипта на Python я заметил, что когда строка "????" передается в качестве аргумента командной строки, она преобразуется в "data" во время выполнения программы. Теперь я не уверен, является ли это строкой или каким-либо другим типом данных. Найти информацию об этом было сложно, учитывая условия поиска.

Почему это происходит и что это значит?

Комментарии:

1. есть ли файл, вызываемый data в каталоге, в котором вы запускаете скрипт?

Ответ №1:

? является подстановочным знаком оболочки, он соответствует любому символу (аналогично . регулярному выражению). Таким образом, без кавычек ???? расширяется до всех имен файлов с 4 символами. data предположительно, это первое такое имя файла в алфавитном порядке в вашем каталоге.

Смотрите вывод

 echo ????
 

Если вы хотите ???? буквально перейти к сценарию, заключите его в кавычки.

 python yourscript.py '????'
 

Комментарии:

1. Мальчик, я чувствую себя глупо. Как ни странно, я пытался использовать «?» в качестве подстановочного знака в самом скрипте. Я не могу гарантировать, что какой-либо аргумент будет передан в кавычках, поэтому мне придется использовать другой символ. Спасибо!