Проблема возникает в Python, когда аргументы SubProcess.Run () передаются с двойными кавычками - PullRequest
0 голосов
/ 24 октября 2019

Когда аргументы SubProcess.Run () передаются с двойными кавычками, он добавляет дополнительный символ '\' до и после двойных кавычек и вызывает проблему с current.exe, который вызывается скриптом python.

  def RunWithJsonResponse(self, commandList, argumentList):
        commandList.extend(argumentList)
        process = subprocess.run(commandList, stdout=subprocess.PIPE)
        '''process already returns in Json format'''
        Response = process.stdout.decode('utf-8')

        '''translate to python dictionary'''
        ResponseDicts = {}
        try:
            ResponseDicts = json.loads(Response)
        except:
            ResponseDicts = json.loads(json.dumps(Response))
            print(Response)
        commandList.clear()
        return ResponseDicts

Пример списка команд, отправляемых сценарием python = ['C:\\Users\\srw.exe', 'port=COM3', 'writebytes="09 78 00 00"']

команда, полученная в конце.exe = C:\\Users\\srw.exe port=COM3 writebytes=\"09 78 00 00"\

Поэтому я хотел бы найтиспособ избавиться от этого дополнительного символа '\' на другом конце.

Я сделал следующее, когда сконструирован третий аргумент 'writebytes=' + ' \" ' + 09 78 00 00 + ' \" ' ..но мне не повезло

1 Ответ

0 голосов
/ 24 октября 2019

Может быть, попытаться экранировать кавычки с \ во входных данных для подпроцесса, поэтому в commandList в первую очередь.

...