Eu tenho algumas bibliotecas e módulos que estão presos no 2.6, enquanto eu fiz a porta do meu código existente no Python 3. Agora eu gostaria de usar o código em execução no 2.6, e optei por usar subprocess.run
O problema é que a passagem de comandos simples funciona, mas quando eu passo comandos mais complexos, que exigem parâmetros em aspas simples ou duplas, acabo dando todos os tipos de erros, devido ao fato de que algo não é escapado corretamente.
Estou usando o OSX Sierra com Python 2.7.13 e 3.6.3
Eu tentei várias abordagens, mas não consigo obter uma maneira confiável de encapsular a string com todos os parâmetros, em uma lista de subprocessos e passá-la do Python3 para o Python2.
É assim que meu comando complexo se parece:
command = ["python2", "-m", "executeTests", "-s", "--processOutputDir ~/Desktop/out/", '--executable="/Applications/Testapp/Test.app"', "legacy_tests.py"]
Eu usei tanto o stdout
quanto o stderr
com subprocess.PIPE
para obter a saída, mas os erros que recebo parecem indicar que ele não pode ler o parâmetro processOutputDir or the
executável '. / p>
Qual é a abordagem mais "livre de erros" para transmitir strings complexas em uma função de subprocesso? Eu tentei com seqüência de caracteres em vez de uma lista e eu teria um erro analisando-lo; Em seguida, envolvi tudo em uma lista e passei isso como variável, mas, mesmo nesse caso, os comandos e as opções não são analisados corretamente.