【问题标题】:system call in pythonpython中的系统调用
【发布时间】:2012-03-28 15:36:57
【问题描述】:

我想在我的 python 代码中进行系统调用,但问题是它破坏了我原始代码的顺序..

例如

def call_host(self):
    self.builder.get_object("windowMain").show()         
    os.system('python Adder.py')
    self.builder.get_object("window1").show()

在上面的 pygtk 代码中,一旦调用 Adder.py,下一行将不会执行我希望系统执行 adder.py 并返回到我的原始代码... 提前谢谢

这是我的 Adder.py 代码

import sys
try:  
    import pygtk  
    pygtk.require("2.0")  
except:  
    pass  
try:  
    import gtk  
except:  
    print("GTK Not Availible")
    sys.exit(1)

class adder:
    result = 0

    def __init__( self, number1, number2 ):    
        return None            

    def giveResult( self,number1,number2 ):    
        self.result = int( number1 ) + int( number2 )    
        return str(self.result)

class adderGui:    
    def __init__( self ):    
        self.builder = gtk.Builder()    
        self.builder.add_from_file("Adder.glade")

        dic = { 
            "on_buttonQuit_clicked" : self.quit,    
            "on_buttonAdd_clicked" : self.add,    
            "on_windowMain_destroy" : self.quit,    
        }

        self.builder.connect_signals( dic )

    def add(self, widget):    
        entry1 = self.builder.get_object ("entry1")    
        entry2 = self.builder.get_object ("entry2")

        try:    
            thistime = adder( entry1.get_text(), entry2.get_text() )
        except ValueError:    
            self.builder.get_object("hboxWarning").show()    
            self.builder.get_object("entryResult").set_text("ERROR")    
            return 0

        self.builder.get_object("hboxWarning").show()

        #self.builder.get_object("image1").hide()

        self.builder.get_object("entryResult").set_text(
            thistime.giveResult(entry1.get_text(), entry2.get_text())
        )

    def quit(self, widget):    
        sys.exit(0)

adderGui = adderGui()    
gtk.main()

【问题讨论】:

  • 为什么Adder.py的代码很重要?不能是脚本吗?

标签: python system-calls os.system


【解决方案1】:

如果您使用subprocess.Popen,您的主程序将继续运行而不会“阻塞”,直到子进程终止。

【讨论】:

    【解决方案2】:

    os.system 将在子进程中运行命令并等待它完成后再运行。如果您想与父进程并行运行它,那么您应该查看subprocess 模块——特别是,您需要创建一个subprocess.Popen 对象。

    【讨论】:

      猜你喜欢
      • 2014-12-25
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2015-07-17
      • 1970-01-01
      • 2016-11-20
      相关资源
      最近更新 更多