开心姥姥 2019-11-12 05:25 采纳率: 50%
浏览 1768
已采纳

求助:Python的Subprocess.popen()返回的对象的stdin怎么用以下代码为何写入后没反应也不会报错

Python


class Thread(threading.Thread):
    def __init__(self, name, sub):
        threading.Thread.__init__(self)
        self.name = name
        self.sub = sub

    def run(self):
        while True:
            if self.sub.poll() is not None:
                break
            command = bytes(str(input("console:").encode('utf-8')), encoding="utf-8")
            # print(type(command))
                        #下面这句不会报错,也执行了,就是无效,跟没有这句一样为啥
            self.sub.stdin.write(command)
is_input_started = False
while True:
    empty = False
    try:
        enter = str(input('主文件路径:'))
    except SyntaxError:
        empty = True
    if not empty:
        if str(input('确定路径吗?(y,n):')) == 'y':
            break
sub = subprocess.Popen(enter, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
    while True:
        if sub.poll() is not None:
            print('Stopped')
            break
        out = sub.stdout.readline()
        if not out == "":
            print(out)
        if not is_input_started:
            thread = Thread.Thread('input', sub)
            thread.start()
            is_input_started = True

输入后并没有任何反应,怎么办
求助:Python的Subprocess.popen()返回的对象的stdin怎么用以下代码为何写入后没反应也不会报错
求助:Python的Subprocess.popen()返回的对象的stdin怎么用以下代码为何写入后没反应也不会报错
运行的程序是长时间一直运行
过程中需要互交于是这个问题就来了

  • 写回答

2条回答 默认 最新

  • lectre 2020-02-20 12:10
    关注

    windows系统上尝试stdin.write(command) 中得command字符串后添加'\r\n',随后调用一下stdin.flush()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#linux#的问题(输入输出错误):出现这个界面接着我重新装系统,又让修电脑的师傅帮我扫描硬盘(没有问题)用着用着又卡死(相关搜索:固态硬盘)
  • ¥15 cv::resize不同线程时间不同
  • ¥15 web课程,怎么做啊😭没好好听课 根本不知道怎么下手
  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊
  • ¥15 会会信号与系统和python的来
  • ¥15 关于#python#的问题