Каждый раз, когда в переменной есть косые черты, я сталкиваюсь с такого рода ошибками. Посмотрим, что хранит ваша переменная.
some_variable = "python -c \" exec ('' 'подпроцесс импорта \ nsubprocess.Popen (\ "{} \")' '') \"" .format (file_path)
Это будет хранить:
python -c "exec ('' 'импортный подпроцесс
и
subprocess.Popen ("") '' '"
в двух разных строках.
Из-за изменения строки в переменной pythonсоздает исключение.
Одно из решений, которое я использовал, использует двойные слэши:
"python -c \"exec('''import subprocess\\nsubprocess.Popen(\"{}\")''')\""
Это решит проблему изменения строки, но иногда это сбивает с толку, когдав строке переменной, которая должна быть сохранена, есть много косых черт.
Вторым решением является использование строки Python Raw: строка Python raw создается путем добавления префикса строкового литерала к 'r' или 'R.' Python rawСтрока обрабатывает обратную косую черту как буквальный символ.
Таким образом, вместо того, чтобы считать косые черты и преобразовывать их в двойные косые черты, нужно всего лишь сделать следующее::
some_variable = r"python -c \"exec('''import subprocess\nsubprocess.Popen(\"{}\")''')\"".format(filepath)
Будет сохранена строка в том виде, в котором она находится в переменной:
python -c \"exec('''import subprocess\nsubprocess.Popen(\"ATS 2.pdf\")''')\"