热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python如何与其他软件交互_如何与Python中的另一个程序交互?

我在基于终端的进程间通信中遇到了一些类似的问题,这些问题似乎无法使用popen来解决(等等)。通过阅读pty的源代码,我最终学会了如何使用pty

我在基于终端的进程间通信中遇到了一些类似的问题,这些问题似乎无法使用popen来解决(等等)。通过阅读pty的源代码,我最终学会了如何使用pty,其中包含了如何(以及解释为什么)让{}跳过必要的环的例子。在

当然,根据您的需要,您也可以使用pexpect!在

这是我在我自己的项目中使用的精华。请注意,我没有检查子进程是否终止;脚本是作为管理长时间运行的Java进程的守护进程运行的,因此我从不需要处理状态代码。希望这能让你得到你所需要的。在import os

import pty

import select

import termios

child_pid, child_fd = pty.fork()

if not child_pid: # child process

os.execv("/path/to/command", ["command", "arg1", "arg2"])

# disable echo

attr = termios.tcgetattr(child_fd)

attr[3] = attr[3] & ~termios.ECHO

termios.tcsetattr(child_fd, termios.TCSANOW, attr)

while True:

# check whether child terminal has output to read

ready, _, _ = select.select([child_fd], [], [])

if child_fd in ready:

output = []

try:

while True:

s = os.read(child_fd, 1)

# EOF or EOL

if not s or s == "\n":

break

# don't store carriage returns (no universal line endings)

if not s == "\r":

output.append(s)

except OSError: # this signals EOF on some platforms

pass

if output.find("Enter password:") > -1:

os.write(child_fd, "password")



推荐阅读
author-avatar
欣仪威侑扬芸_782
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有