gpt4 book ai didi

linux - 如何在 Python 中打开新的控制台并从输入的用户那里获取数据?

转载 作者:太空狗 更新时间:2023-10-29 12:23:12 25 4
gpt4 key购买 nike

我正在寻找一个 Python3 脚本片段,它可以打开新的控制台窗口并与之通信。

一些场景:

  • 打开新控制台
  • 提示“输入一些数据”
  • 用户写入一些数据
  • 数据从控制台发送回 Python 脚本
  • 数据在脚本中处理
  • 一些信息被发送并显示在之前打开的控制台上。

我知道如何打开新窗口:

os.system("gnome-terminal -e 'bash -c \"some instruction\"'")

但是这些知识对我来说毫无用处,因为我不知道如何与这个新的控制台窗口进行通信。

任何帮助将不胜感激:)

最佳答案

我有点不确定您为什么要这样做。我可以建议使用线程和 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 脚本发送命令。 worker 现在可以做任何你想做的事。有关更详细的示例,请参阅 this post


或者,如果那是 Not Acceptable ,您尝试做的是来自命令行的两个方向的“PIPE”数据。看看this post他们在哪里:

proc = subprocess.Popen(['some_cmd', '--command_line_parameters'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()

关于linux - 如何在 Python 中打开新的控制台并从输入的用户那里获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com