退出npyscreen后运行功能或BASH命令

时间:2019-09-26 07:37:55

标签: python-3.x npyscreen

我尝试在npyscreen中输入后运行一个函数,尝试了一些操作,但仍然卡住了。只是退出npyscreen并返回到bash屏幕。该功能应该启动看门狗/ 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 :(得分:0)

我不确定我是否正确理解了你想要的东西。

对于执行我喜欢使用子进程模块的任何类型的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并随时将其杀死,您可以查看子进程模块文档here