Subprocess.run falha ao interpretar os parâmetros corretamente, ao executar o código Python2 no Python3

0

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.

    
por rataplan 27.11.2017 / 08:21

0 respostas