Python3 Как обрабатывать специальные символы, возвращаемые в выводе subprocess.run? - PullRequest
0 голосов
/ 14 июля 2020

Код, который я запускаю, выглядит примерно так

o=subprocess.run( ['ls -1 pathtosomedir/'+prefix+'*'],shell=True, stdout=subprocess.PIPE, universal_newlines=True)
print('details:',o.stdout)

Если в возвращаемом файле есть скобки, например test (1) .csv

, то вывод будет

подробности: test (1) .csv

/ bin / sh: 1: Синтаксическая ошибка: "(" неожиданно

Почему, похоже, пытается проанализировать вывод? И как правильно обрабатывать эти случаи? Спасибо!

(я использую python 3.6.9)

EDIT: Оказалось, что o.stdout был передан для последующего subprocess.run. И если o.stdout содержал скобки, его нужно экранировать, как указано в ответе. Итак, закрывая этот вопрос.

1 Ответ

0 голосов
/ 14 июля 2020

Операторы stdout и print не должны анализировать вывод. Вероятно, проблема связана с первой строкой.

Есть ли скобка или специальный символ в переменной prefix? Например:

o=subprocess.run(['ls' + ' test(1)'])

даст вам точную ошибку, которую вы указали

/bin/sh: -c: line 0: syntax error near unexpected token (

, потому что вам нужно экранировать круглые скобки с помощью backsla sh как так:

o=subprocess.run(['ls' + ' test\(1\)'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...