QProcess выполнить bash и curl не показывает такую ​​ошибку файла? - PullRequest
0 голосов
/ 10 июля 2020

Мне нужно запустить команду оболочки bash <(curl -L https://get.acme.sh) в QProcess, но она показывает /bin/bash: <(curl: No such file or directory ошибку, я запускаю оболочку cmd, хорошо работает.

Код

class Process:
    def __init__(self):
        self.p = QProcess()
        self.p.setProcessEnvironment(QProcessEnvironment.systemEnvironment())
        self.p.finished.connect(self.on_process_finished)
        self.p.readyReadStandardOutput.connect(self.on_stdout)
        self.p.readyReadStandardError.connect(self.on_stderr)

    
    def start(self, program: str, arguments: typing.List[str] = []):
        self.p.setProgram(program)
        self.p.setArguments(arguments)
        self.p.start(program)
        self.p.waitForFinished(-1)
    
    def on_process_finished(self, exitCode, exitStatus):
        arguments = ' '.join(self.p.arguments())
        process_str = f'{self.p.program()} {arguments}'
        print_finish(f'Process: [{process_str}] execute finish!!!')
    
    def on_stdout(self):
        data = bytes(self.p.readAllStandardOutput())
        data_str = data.decode('utf-8')
        print(data_str)
        
    def on_stderr(self):
        data = bytes(self.p.readAllStandardError())
        data_str = data.decode('utf-8')
        print(data_str)

p = Process()
cmd = "bash  <(curl -L https://get.acme.sh)"
p.start(cmd)

1 Ответ

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

попробуйте сделать cmd = "bash <(curl -L <a href="https://get.acme.sh" rel="nofollow noreferrer">https://get.acme.sh)" необработанной строкой, подобной этой cmd = r"bash <(curl -L <a href="https://get.acme.sh" rel="nofollow noreferrer">https://get.acme.sh) "это касается интерпретации специальных символов, что, как мне кажется, вызывает у вас проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...