python打开命令窗口-在新的终端窗口中从python执行终端命令?

一般来说,shell无法做到这一点.你要做的就是运行终端程序本身,或者是为你这样做的一些启动程序.对于每个终端程序,这样做的方式是不同的.

在某些情况下,os.startfile会做你想要的,但这不会是普遍的.

另外,一般来说,您将真正需要一个绝对路径到您的脚本,因为新的终端窗口将运行一个新的shell,因此不一定有相同的工作目录.但是我会忽略这些例子.

使用Windows cmd,最简单的方法是start shell命令.如果你启动的是任何命令行程序,包括python,它将得到一个新的cmd窗口.所以,像:

subprocess.call("start /wait python bb.py", shell=True)

OS X有一个类似的命令open.它是一个真正的程序,而不是一个shell命令,所以你不需要shell = True.但是,运行命令行程序或打开的脚本通常不会打开一个新的终端窗口.事实上,它的全部要点是允许您运行程序,就像在Finder中双击一样,除非它是一个.command文件,否则终端不会在终端中运行某些内容.

所以,你可以创建一个临时的.command包装文件并打开它;这样的东西(未经测试):

with tempfile.NamedTemporaryFile(suffix=".command") as f:

f.write("#!/bin/sh python bb.py ")

subprocess.call(["open", "-W", f.name])

或者,您可以明确地告诉开放使用Terminal.app,如下所示:

subprocess.call(["open", "-W", "-a", "Terminal.app", "python", "--args", "bb.py"])

或者您可以通过AppleEvents脚本Terminal.app.例如:

appscript.app("Terminal").do_script("python bb.py")

“do script”事件打开一个新窗口,并将其参数作为命令运行.如果您想要更详细的控制,请在AppleScript编辑器中打开脚本字典,并查看所有可以做的有趣的东西.

在Linux或其他* nix系统上,好的,有65,102种不同的桌面环境,启动器和终端程序.你需要全部工作吗?

使用gnome-terminal,只需再次运行终端即可提供一个新窗口,-x参数可以指定一个初始命令,因此:

subprocess.call(["gnome-terminal", "-x", "python bb.py"])

许多较老的终端试图兼容xterm,它与-e一样,所以:

subprocess.call(["xterm", "-e", "python bb.py"])

subprocess.call(["rxvt", "-e", "python bb.py"])

…等

你怎么知道用户使用哪个终端?好问题.你可以从自己的家长进程中走出来,直到找到看起来像终端的东西.或者你可以假设每个人都有xterm.或者您可以查看各种发行版如何配置默认终端并搜索所有的终端.要么…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值