Python не имеет доступа к этим частям.Они не являются частью аргументов команды для Python, а являются входными данными для shell .Каналы, кавычки и точки с запятой являются частью синтаксиса оболочки, а не командной строки для подпроцессов, которые запускает оболочка.
Оболочка разделяет заданный вами синтаксис, а затем вызывает Python только с аргументами, адресованными python
двоичныйВы не можете получить целые команды оболочки из подпроцессов, это может быть потенциальной проблемой безопасности.
Если вы хотите передать информацию скрипту Python, вы должны сделать это в аргументах команды.Это означает, что если вы должны включить кавычки в свои аргументы, вы должны сначала экранировать их на уровне оболочки, чтобы они не интерпретировались как синтаксис оболочки, например,
python foo.py arg1 '|' arg2
затем доступен в sys.argv
как
['foo.py', 'arg1', '|', 'arg2']
, где одинарные кавычки вокруг |
говорят оболочке интерпретировать этот символ как текст аргумента.
Для получения подробных сведений о том, какцитирование работ.Например, если вы используете bash, прочитайте раздел руководства Bash по цитированию .