如何从另一个python脚本执行python命令?
我在Python有一个测试环境。它由命令提示符上的以下命令执行。
1)首先,我必须转到.py文件所在的DIR
2)然后我只是执行python filename.py和GUI出现
现在,我必须创建一个可以打开gui的脚本...即从内部自身执行命令" python filename.py"。我在脚本内尝试了"系统"命令,但GUI没有出现。I.e我尝试了
系统(" python filename.py"),但屏幕上什么也没有出现
请帮助。
如果这看起来太基本,请原谅我,但是如果没有完整的代码或输出来检查我正在伸展,您是否导入OS?例如,如果test.py包含
- import os
- os.system('python hello.py')
hello.py只是打印你好,然后
- C:\tmp>python test.py
- hello
除非还有其他路径或模块问题,否则应该做您要问的事情。当您说GUI没有出现时,会发生什么吗?有错误吗?
Python
"流程管理"
文档可能会有所帮助。
从您的脚本运行另一个Python脚本:
- import myscript
- myscript.somefunc()
就像导入标准模块一样。
thanx进行及时的答复...但是正如您所问的...我已经导入OS并从我的Python脚本执行了以下命令:
OS.System(" Python filename.py")
没有标记错误消息,并且该命令已成功执行,导致命令提示符再次执行,但GUI没有出现。
可能是什么原因。
最初,我曾经通过简单地输入来运行GUI:
python filename.py
您的GUI TKINTER还是其他工具包?
我不知道该工具套件...
它是用于一些测试的pupose。我将测试文件加载到其中,然后按Runtest按钮。
有机会,当您手动致电Python时,您是否会提供命令行论证?如果是这样,请尝试
- system("python filename.py arg1 arg2")
没有命令行参数。我刚刚在手动运行GUI时从命令提示符中运行Python filename.py。
就我个人而言,我不建议从Anther调用Python脚本的方法。 "清洁"方法是导入它。
例如,在称为myScripta.py的脚本中,您有
- def displayGUI():
- print "I am from myscriptA.py in functoin displayGUI"
- return
然后在myScriptB.py中,您可以像这样调用您的GUI显示功能
- import myscriptA ##or from myscriptA import displayGUI
- myscriptA.displayGUI()
嗨,我只是想跟随并有一个问题.....您的脚本会在DOS窗口中运行,但是您想要的是要在空闲上运行吗?
前任:
- >>> for i in range(5):
- print i
- 1
- 2
- 3
- 4
- >>>
因此,如果您将该脚本保存为loop.py:
- for i in range(5):
- print i
然后写道:
- import os,sys
- os.system(r"C:\python25\loop.py")
然后将其保存为testrun.py。如果您执行testrun.py,它将在DOS窗口中运行循环,但您希望它执行并打印出空闲?是吗,还是我在尝试关注时走错了轨道?
你好...
我想我的问题还不清楚...
我有一个测试环境。当DOS窗口上我键入以下命令时,将出现环境的GUI:
python filename.py
出现一个窗口,我可以在其中加载测试,然后单击GUI中的选项卡,该选项卡上说运行测试。
现在情况是...我应该做一些初始 在加载测试之前的l处理.....这包括通过Python脚本打开CSV文件,读取CSV文件的特定行,从那里读取输入,然后将测试文件加载到GUI中。
因此,我应该在所有这些处理后打开GUI ...从Python脚本,而不再通过在DOS窗口上键入命令。
我尝试执行相同的命令:python filename.py从python脚本类似:
导入操作系统
OS.System(" Python filename.py")
但是它没有wrk ...
我做什么
这是一个基本的TKINTER GUI PORRAM,除了在框架中放一个按钮以外,什么都不做:
- # TkButtonFrame.py'
- from Tkinter import *
- class TestFrame(Frame):
- def __init__(self, parent, *args, **kwargs):
- Frame.__init__(self, parent)
- self.testButton = Button(text='Run Test')
- self.testButton.pack()
- if __name__ == "__main__":
- root = Tk()
- testFrame = TestFrame(root)
- testFrame.pack()
- root.mainloop()
它确实有__ -main__"守卫",我认为可能会引起问题。
这是命令模块:
- # rungui.py
- import os
- os.system('python TkButtonFrame.py')
如果您运行命令rungui.py,则将出现GUI。
如果看起来像您的测试程序,则用来使其成为tkinter的工具包。
如果您将这些模块放入测试环境中,并且它们不起作用,那么(很可能是PythonPath)无法正确设置。
重要的是要注意
- import TkButtonFrame
由于__name__ ==" __ -main __":guard。
我的测试文件的__ -main __看起来像这样:
- # if running standalone
- if __name__ == "__main__":
- app = MyApp(0) # Create an instance of the application class
- app.MainLoop() # Tell it to start processing events
- # End of Program
我已经在您的帖子中添加了代码标签。请阅读"回复指南",以了解如何做到这一点。
那么如何定义班级MyApp?
Myaapp类如下:
- class MyApp(wx.App):
- # wxWindows calls this method to initialize the application
- def OnInit(self, operator=None):
- # Create an instance of our customized Frame class
- frame = MyFrame(None, -1, "PetShopTest")
- frame.Show(1)
- # and let wxWindows know that is our main window...
- self.SetTopWindow(frame)
- # we need to return a success flag (to keep wxWindows happy)...
- return 1
惊人的!您的GUI工具包是WXPYTHON。我认为这是最好的。
从此
应该
工作,只能有一个第一个复数,为什么不这样做:
Python不知道如何找到您的程序(您一直在称其为" filename.py)。您可能需要指定命令中的整个路径。在Windows上使用RAW字符串:Windows名称:
- r"D:\Python24\Lib\filename.py"
或者,您可以将路径添加到操作系统中称为PythonPath的环境变量。或者,您可以将路径放入任何名称(se)toutpath.pth的文件中,d:\ python24 \ lib \ lib \ site-packages(在我的系统)目录中。 .pth扩展名告诉Python将Whaterver在该文件中添加到SYS.Path。
兄弟在cmd中使用" py",而不是" python"。如果它有效,或者您可能需要设置路径。
它只是一个假设。 :))
标签: python