我正在寻找一个Python3脚本片段,它打开新的控制台窗口并与之通信。
某些情况:
我知道如何打开新窗口:
os.system("gnome-terminal -e 'bash -c \"some instruction\"'")
但是这些知识对我来说无能为力,因为我不知道这个新的控制台窗口是如何通信的。
任何帮助都是apreciate:)
答案 0 :(得分:1)
我有点不确定你为什么要这样做。我可以使用线程和queues来建议完全pythonic方法:
import threading
from queue import Queue
import time
def worker(q):
"""thread worker function"""
running = True
while running:
message = q.get()
print('Worker received message: {}'.format(message))
if message == 'KILL':
running = False
print('Worker completed')
if __name__ == '__main__':
q = Queue()
worker = threading.Thread(target=worker, args=(q,))
worker.start()
running = True
while running:
user_input = input('Input some data: ')
q.put(user_input)
if user_input == 'KILL':
running = False
time.sleep(0.5)
print('Program terminated')
您现在可以从控制台向另一个python脚本发送命令。工人现在可以做任何你想做的事。有关更详细的示例,请参阅this post
或者,如果这是不可接受的,那么您要做的是从两个方向的命令行“PIPE”数据。看看this post他们在哪里:
proc = subprocess.Popen(['some_cmd', '--command_line_parameters'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
答案 1 :(得分:0)
我在两个控制台之间使用了套接字通信。
这是一些解决方法,但此解决方案具有我想要的所有功能。
我已经编写了第二个与我的主程序连接的Python脚本,然后从用户那里获得输入并将其发送到主程序。