Запуск функции или команды BASH после выхода из npyscreen - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь запустить функцию после входа в npyscreen, пробовал несколько вещей и все еще застрял.Просто выходит из npyscreen и возвращается на экран bash.Предполагается, что эта функция запускает сторожевую папку watchdog / rsync, ожидающую резервного копирования файлов.

#!/usr/bin/env python
# encoding: utf-8
import npyscreen as np
from nextscript import want_to_run_this_function

class WuTangClan(np.NPSAppManaged):
    def onStart(self):
         self.addForm('MAIN', FormMc, name="36 Chambers")

class FormMc(np.ActionFormExpandedV2):
     def create(self):
         self.rza_gfk = self.add(np.TitleSelectOne, max_height=4, name="Better MC:", value=[0], values=["RZA", "GhostFace Killah"], scroll_exit=True)

     def after_editing(self):
        if self.rza_gfk.value == [0]:
            want_to_run_this_function()
            self.parentApp.setNextForm(None)
        else:
            self.parentApp.setNextForm(None)

if __name__ == "__main__":
    App = WuTangClan()
    App.run()

1 Ответ

0 голосов
/ 26 сентября 2019

Я не уверен, правильно ли я понял, что вы хотите.

Для выполнения любой команды bash, которую мне нравится использовать в подпроцессном модуле, у него есть конструктор Popen, который вы можете использовать для запуска чего-либо из bash..

Например, в Windows

import subprocess
process = subprocess.Popen(['ipconfig','/all'])

В Unix-подобной системе:

import subprocess
process = subprocess.Popen(['ip','a'])

Если у вас есть файл ".py", вы можете передать параметры, например, еслигде вы запускаете его из терминала

например,

import subprocess
process = subprocess.Popen(['python3','sleeper.py'])

Вы можете даже получить pid процесса и уничтожить его, когда захотите, вы можете посмотреть документацию по подпроцессному модулю здесь

...