python 打开新的控制台,在新的控制台窗口中打开Python流

view.py

: 启动输入控制台, 将更新打印到流中的常量, 从命名管道获取输入并将其馈送到更新流:

#!/usr/bin/env python

import os

import subprocess

import sys

import tempfile

from Queue import Queue, Empty

from threading import Thread

def launch_entry_console(named_pipe):

if os.name == 'nt': # or use sys.platform for more specific names

console = ['cmd.exe', '/c'] # or something

else:

console = ['xterm', '-e'] # specify your favorite terminal

# emulator here

cmd = ['python', 'entry.py', named_pipe]

return subprocess.Popen(console + cmd)

def print_updates(queue):

value = queue.get() # wait until value is available

msg = ""

while True:

for c in "/-\|":

minwidth = len(msg) # make sure previous output is overwritten

msg = "\r%s %s" % (c, value)

sys.stdout.write(msg.ljust(minwidth))

sys.stdout.flush()

try:

value = queue.get(timeout=.1) # update value

print

except Empty:

pass

print 'view console'

# launch updates thread

q = Queue(maxsize=1) # use queue to communicate with the thread

t = Thread(target=print_updates, args=(q,))

t.daemon = True # die with the program

t.start()

# create named pipe to communicate with the entry console

dirname = tempfile.mkdtemp()

named_pipe = os.path.join(dirname, 'named_pipe')

os.mkfifo(named_pipe) #note: there should be an analog on Windows

try:

p = launch_entry_console(named_pipe)

# accept input from the entry console

with open(named_pipe) as file:

for line in iter(file.readline, ''):

# pass it to 'print_updates' thread

q.put(line.strip()) # block until the value is retrieved

p.wait()

finally:

os.unlink(named_pipe)

os.rmdir(dirname)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值