首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何才能使msvcrt.getch()在mintty中的行为方式与在cmd中的行为方式相同?

msvcrt.getch() 是 Python 的一个标准库函数,用于从控制台读取单个字符而不回显。在不同的终端模拟器(如 cmd 和 mintty)中,其行为可能会有所不同,主要是因为它们对键盘输入的处理方式不同。

基础概念

  • msvcrt: 这是 Microsoft Visual C++ 运行时库的一部分,提供了许多与 C 语言兼容的函数,包括 getch()
  • mintty: 是一个基于 Cygwin 的 Windows 终端模拟器,提供了类 Unix 的终端环境。
  • cmd: 是 Windows 自带的命令提示符窗口。

行为差异的原因

在 cmd 中,msvcrt.getch() 通常能够正确地读取单个字符。但在 mintty 中,由于 mintty 对键盘事件的处理方式不同,可能会导致 getch() 读取到的字符与预期不符,或者根本无法读取。

解决方案

为了使 msvcrt.getch() 在 mintty 中的行为与在 cmd 中相同,可以考虑以下几种方法:

方法一:使用 termios 模块

termios 模块提供了对终端 I/O 的控制,可以用来设置终端为原始模式,从而确保 getch() 能够正确读取字符。

代码语言:txt
复制
import msvcrt
import termios
import tty
import sys

def get_char():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = msvcrt.getch()
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

print(get_char())

方法二:使用 pywinpty

pywinpty 是一个 Python 库,可以用来创建和管理 Windows 控制台会话。通过它,可以创建一个新的控制台会话,并在其中运行你的程序,从而确保 getch() 的行为与在 cmd 中相同。

首先,安装 pywinpty

代码语言:txt
复制
pip install pywinpty

然后,在代码中使用 pywinpty

代码语言:txt
复制
import pywinpty
import msvcrt

with pywinpty.PyWinpty() as p:
    print("Type something and press Enter...")
    while True:
        if msvcrt.kbhit():
            ch = msvcrt.getch()
            print(f"You pressed: {ch}")
            break

参考链接

通过上述方法,你应该能够在 mintty 中实现与 cmd 相同的 msvcrt.getch() 行为。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

生物行为识别技术在社工诈骗中的应用分析与探索

人在与人、设备交互过程中,都有其特定的、可识别的方式,生物行为特征可以识别不符合已识别模式的异常行为,如诈骗者行为模式。...这也是区分诈骗者与合法用户的标志。 这种生物行为识别技术方法能够在账户设置过程中实时识别潜在的欺诈者。...4 社工诈骗分析与检测 针对社工诈骗,其防护策略除了从管理和意识上进行培训、学习提升之外,也可以从技术上进行加强。不同的社工方式,其检测思路不同。...在日志监测过程,当发现高风险评分的身份正在进行交易时,则存在被欺诈的风险。 6 总结 社工诈骗攻击是一种典型的攻击方式。结合用户的生物行为特征进行异常检测,可强化对社工诈骗行为的识别。...如何在传统检测方法的基础上,融合不同级别用户行为特征,更精准的刻画用户行为,识别各类社工诈骗攻击,是一个需要持续探索的方向。 精彩推荐

75910

—认知控制在作弊行为与诚实行为中的介入作用

日常生活中,我们总会面临类似这样服从于自我兴趣却违背道德准则的诱惑与维护道德准备放弃眼前利益的矛盾,但我们目前还不清楚大脑如何解决这种冲突。...基于以上背景,本研究旨在探索认知控制如何解决额外经济回报与自我观念的冲突,更具体地说,这种决策过程如何在大脑中展开。对认知控制在作弊决策中功能的更好认识有助于调和前述两种假说的矛盾。...另外,借助区域激活水平与连接方式对作弊试次和作弊被试预测的高准确性验证了结果的可重复性。...决策过程中功能连接的个体差异: 为了进一步探索在上述过程中,不同区域如何相互影响实现作弊行为的决策,研究者考察了在决策阶段上述区域的功能连接。...在决策过程中使用参与者自己思维网络中的功能连接模式将参与者分类为作弊者或诚实的参与者 总结: 在这项研究中,研究者探索了与奖励预期,自我审视思维和认知控制相关的神经机制如何参与个人的诚实(不诚实)决策。

1.1K20
  • 在C#中,如何以编程的方式设置 Excel 单元格样式

    前言 在C#开发中,处理Excel文件是一项常见的任务。...在处理Excel文件时,经常需要对单元格进行样式设置,在此博客中,小编将重点介绍如何使用葡萄城公司的服务端表格组件——GrapeCity Documents for Excel(以下简称GcExcel)...与文本颜色一样,可以从 Excel 中的工具栏和设置单元格格式对话框应用边框。要使用 GcExcel 设置边框,可以使用IRange 接口的 Borders 来设置。...属性与 Range 接口一起使用,以添加有角度的文本。...RichText 控件 GcExcel 支持在单元格中应用富文本格式。富文本格式允许使用不同的颜色、字体、效果(粗体、下划线、双下划线、删除线、下标、上标)等在单元格中设置文本样式。

    37610

    转:探索二叉树的遍历算法在文档管理软件中的原理与行为分析

    排序与分类:对于文档管理,二叉树可以用于排序和分类文件。例如,可以使用二叉搜索树,其中左子树的节点值小于父节点,右子树的节点值大于父节点,以便快速进行字母顺序的检索。...用户可以通过在树中向下移动并根据节点值的大小判断向左还是向右移动,从而快速找到目标文档。在文档管理软件中,二叉树的遍历算法可以有多种不同的方式来实现不同的行为。...以下是一些常见的遍历行为分析:前序遍历:从根节点开始,先访问当前节点,然后递归地访问左子树和右子树。在文档管理软件中,前序遍历可以用于显示文件夹结构,以及按照文件夹的嵌套关系展示文档。...在文档管理软件中,后序遍历可以用于执行某些清理操作,比如关闭打开的文档或文件夹。层序遍历:从根节点开始,逐层地访问树中的节点。...不同的遍历方式就如同演出的不同版本,能够根据软件的需求以及用户的口味进行巧妙调整,给用户带来更加多样化的享受。

    24161

    开源AI视频监控系统在监狱安全中的应用——实时情绪与行为分析、暴力预警技术详解

    背景与挑战由于囚犯群体的情绪波动和复杂的社会互动,监控人员难以在繁忙的工作中全面监测每个潜在的安全隐患。...此外,传统的闭路电视(CCTV)系统也无法有效处理这些复杂的情绪与行为动态,导致暴力行为、集体冲突等事件往往在发生之前无法及时预警。...具体来说,系统的关键技术包括:1. 实时行为与情绪分析该系统通过深度学习算法分析视频流中的人体姿态、动作及面部表情等信息,识别囚犯的行为状态。...系统能够准确识别各种异常行为,如摔倒、攀爬、激烈的肢体冲突等。通过对视频中的目标进行跟踪和动作分析,系统可以在暴力行为发生前的初期就发出警报。...例如,系统可以优先识别囚犯之间的暴力冲突,或者针对特定囚犯的行为模式进行调整。 自主学习与模型更新:AI系统支持持续学习,能够根据新的监控数据不断优化识别模型,确保其在长期使用中的稳定性和适应性。

    30810

    【数据库差异研究】别名与表字段冲突,不同数据库在where中的处理行为

    ⚛️总结 单层查询 数据库类型 别名与表字段重名冲突处理方式 SQLITE 在 WHERE 子句中使用表字段而非别名 ORACLE 在 WHERE 子句中使用表字段而非别名 PG 在 WHERE 子句中使用表字段而非别名...一、当单层查询发生别名与表字段重名冲突时,不同数据库在where中的处理行为是怎样的呢?...二、当嵌套查询发生别名与表字段重名冲突时,不同数据库在where中的处理行为是怎样的呢? 详见后文。...♋2.2 测试嵌套查询 根据3.1 章节可知:单层查询 数据库类型 别名与表字段重名冲突处理方式 SQLITE 在 WHERE 子句中使用表字段而非别名 ORACLE 在 WHERE 子句中使用表字段而非别名...PG 在 WHERE 子句中使用表字段而非别名 在测试用例基础上,设计的测试用例与预期行为如下: 测试场景三(嵌套查询——含子查询别名): SELECT * FROM (SELECT a.client_id

    9910

    智驾新突破—基于脑电图的驾驶员状态与行为检测在智能车辆系统中的应用综述

    基于车辆、环境、驾驶员行为等信息的直接分析在既往驾驶员状态和行为分析的研究中得到了充分重视,但仍存在一些问题。...近期,上海脑科学与类脑研究中心联合西北工业大学的研究人员,针对近些年有关驾驶员脑电图的状态监测和行为分析在智驾中的应用,在领域国际知名期刊IEEE Transactions on Biometrics,...此外,在智能辅助驾驶系统中,EEG技术的应用不仅限于状态监测,还能够识别驾驶员的操作意图,如变道、转向、加速或制动等行为。这为实现车辆的主动安全控制、提高驾驶体验提供了强有力的技术支持。...在这篇论文的讨论和总结部分,作者们提出了基于EEG的驾驶员状态和行为检测技术在智能车辆系统中的应用所面临的挑战,并提出了可能的解决方案和未来的研究方向。...文章得到了陕西省自然科学基础研究计划(2024JC-YBQN-0659)、广东省基础与应用基础联合基金(2022A1515110252)、太仓市基础研究计划(TC2023JC16)等项目的支持,通讯作者联系方式

    66110

    【Linux】解析在【进程PCB】中是如何实现【信号的处理方式(抵达未决阻塞)】

    注意: 被阻塞 的信号产生时将 保持在未决状态 ,直到进程解除对此信号的阻塞,才执行递达的动作....注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作 二.信号处理动作在内核中的表示 1.示意图&作用机制介绍&信号集sigeset_t介绍...(pending),还有一个函数指针表示处理动作 信号集(sigeset_t): 这个类型可以表示每个信号的“有效”或“无效”状态; 非0即1 在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞...block位图为1;阻塞状态解除后设置成0; 2.演示在三张表中的表示 演示: 3.如何改变信号的默认实现动作 【1】实现原理:设置信号的【默认处理函数】变成【自定义函数】 每个进程...PCB中 都有如下图所示三张表,分别叫做 阻塞信号集,未决信号集,处理动作集 ,对应各个信号(1-64) 其中handler表中存储的是函数指针,指向对应的处理动作 原理:我们只要改变我们要改变的信号

    13210

    【DB笔试面试220】在Oracle中,如何备份控制文件?备份控制文件的方式有哪几种?

    Q 题目如下所示: 在Oracle中,如何备份控制文件?备份控制文件的方式有哪几种? A 答案如下所示: 答案:备份控制文件的方式有多种。...如果数据库的结构发生了变化,那么Oracle会自动将控制文件备份到指定目录中,并且在告警日志中记录相关的信息。前提是数据库处于归档模式,并且CONTROLFILE AUTOBACKUP设置为ON。...而且,在告警日志中也只能看到数据库结构发生变化的信息,而看不到控制文件自动备份的信息了,这是Oracle为了改变性能而引入的,防止用户在一个脚本中多次对数据库结构的变化而创建多个控制文件备份。...在Oracle 11g中,备份控制文件的后台进程为MMON的奴隶进程,默认会生成一个trace文件,名称为SID__m000_.trc,该trace文件中记录了控制文件自动备份的位置和时间...RMAN在以下情况中需要快照控制文件:1.同步恢复目录时2.对当前控制文件进行备份时。在RAC环境下,仅仅在实施RMAN备份的节点上需要快照控制文件。

    77420

    Git下载安装手把手教程

    第1个绿框:是否在桌面创建快捷方式,打钩后桌面将出现Git的快捷方式; 第2个绿框:是否每天检查Git是否有Windows更新。 这些根据自己需要选择,选择后,点击“Next”按钮进入下一个界面。...07 设置新存储库中初始分支的名称 这个页面是设置新存储库中初始分支的名称,默认是“master”,如果想修改分支名称,点击第二个选项,在“main”的位置修改即可,这里我选择默认的名称,点击“Next...第三种配置是“从命令提示符使用Git和可选的Unix工具”。警告:这将覆盖Windows工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。...Windows控制台程序(例如交互式Python)必须通过“ winpty”启动才能在MinTTY中运行。 第二个选项是“使用Windows的默认控制台窗口”。...Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Python或node.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode 字体以正确显示非

    2.1K21

    超详细Git 安装教程(Windows)

    这个选项还允许您通过Active Directory域服务使用您的公司内部根CA证书。 9)配置结束行转换方式 Git应该如何处理文本文件中的行结尾?...Windows控制台程序(如交互式Python)必须通过winpty’启动才能在MinTTY中工作,默认选择这个更灵活。...b)第二个选项,使用Windows的默认控制台(cmd.exe),它可以在Win32控制台程序中工作,如交互式Python或node。...is,但有一个非常有限的默认滚动回滚,需要配置为使用Unicode字体,以便正确显示非ascil字符,在Windows 10之前,它的窗口不能自由调整大小,它只允许矩形文本选择 11)选择git下拉默认行为...15)安装完成 Git的安装完成,可以在开始菜单中看到Git的三个启动图标(Git Bash、Git CMD(Deprecated)、Git GUI)。

    19.2K30

    git 入门教程之 git bash 竟然不支持 tree 命令

    然而,cmd 自带的命令行中输入 tree 中竟然发现能够输出目录树,原来 cmd 支持 tree 命令....在命令行窗口内右键弹出 mintty 终端的设置页面,选择文本(Text)中本地化(Locale)配置,选择中文简体(zh_CN),字符集(Character set)设置为UTF-8. ?...在 cmd 中使用 tree 命令直接输入即可得到目录树结构,但是现在需要在 git bash 中调用 cmd 中的 tree 命令. # 直接输入 `tree` 命令,正确响应并且无中文乱码....换句话说,cmd tree 和 cmd dir 或者 cmd 的作用相同,都是切换了当前 bash 环境. 进入 cmd 命令行运行 tree 能够得到正确响应,但存在中文乱码....优雅调用 cmd 简单总结下,如何在 git bash 中借助 cmd 实现 tree 命令. tree.com : 补全调用命令后缀名,直接调用系统命令. cmd //c tree : 借助 cmd

    2.8K70

    Windows系统Git安装教程

    上图红框内的选项是默认勾选的,建议不要动。绿色框1是决定是否在桌面创建快捷方式的。绿色框2是决定在所有控制台窗口中使用TrueType字体和是否每天检查Git是否有Windows更新的。...您将能够从Git Bash,命令提示符和Windows PowerShell以及在PATH中寻找Git的任何第三方软件中使用Git。这也是推荐的选项。   ...第三种配置是“从命令提示符使用Git和可选的Unix工具”。警告:这将覆盖Windows工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。   ...这个界面是配置终端模拟器以与Git Bash一起使用。   第一个选项是“使用MinTTY(MSYS2的默认终端)”。...Windows控制台程序(例如交互式Python)必须通过“ winpty”启动才能在MinTTY中运行。   第二个选项是“使用Windows的默认控制台窗口”。

    3.7K20

    Git的安装教程_什么叫做安卓手机

    这个选项还允许您通过Active Directory域服务使用您的公司内部根CA证书,选择完成后点击Next 8、配置结束行转换方式,Git应该如何处理文本文件中的行结尾,第一个选项,下拉是转换Windows...Windows控制台程序(如交互式Python)必须通过winpty’启动才能在MinTTY中工作,默认选择这个更灵活。...第二个选项,使用Windows的默认控制台(cmd.exe),它可以在Win32控制台程序中工作,如交互式Python或node。...is,但有一个非常有限的默认滚动回滚,需要配置为使用Unicode字体,以便正确显示非ascil字符,在Windows 10之前,它的窗口不能自由调整大小,它只允许矩形文本选择 10、选择git下拉默认行为...这是“git pull”的标准行为:尽可能快进当前分支到一个被捕获的分支,否则创建合并提交。第二个选项,将当前分支改为获取的分支。如果没有要重基的本地提交,这相当于快进。

    1.3K10

    Windows10下安装Git

    如果你的系统是32位的,可以通过如下方式下载: 第二步:双击下载好的git安装包,弹出提示框,如下图: 第三步: 直接点击“Next”进入下一步,选择安装路径,如下图: 第四步:选择好安装路径后,...这是最安全的选择,因为您的PATH根本不会被修改。您只能使用 Git Bash 的 Git 命令行工具。...只有在了解其含义后才使用此选项。...Windows控制台程序(如交互式Python)必须通过’winpty’启动才能在MinTTY中运行。...Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Python或node.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode 字体以正确显示非

    1.5K20

    【黄啊码】git安装教程以及Tortoisegit如何配合实用

    这个选项还允许您通过Active Directory域服务使用您的公司内部根CA证书,选择完成后点击Next 8、配置结束行转换方式,Git应该如何处理文本文件中的行结尾,第一个选项,下拉是转换Windows...Windows控制台程序(如交互式Python)必须通过winpty’启动才能在MinTTY中工作,默认选择这个更灵活。...第二个选项,使用Windows的默认控制台(cmd.exe),它可以在Win32控制台程序中工作,如交互式Python或node。...is,但有一个非常有限的默认滚动回滚,需要配置为使用Unicode字体,以便正确显示非ascil字符,在Windows 10之前,它的窗口不能自由调整大小,它只允许矩形文本选择 10、选择git下拉默认行为...这是“git pull”的标准行为:尽可能快进当前分支到一个被捕获的分支,否则创建合并提交。第二个选项,将当前分支改为获取的分支。如果没有要重基的本地提交,这相当于快进。

    1K30

    git下载安装教程

    上面的绿色框是决定是否在桌面创建快捷方式的。下面的绿色框是决定在所有控制台窗口中使用TrueType字体和是否每天检查Git是否有Windows更新的。这些根据自己需要选择。...建议勾选下面绿色框中第一个,点击“Next”按钮 第五步:这个界面是创建开始菜单中的名称,不需要修改,直接点“Next” 第六步:这个页面是在选择Git文件默认的编辑器,很少用到,所以默认...第三种配置是“从命令提示符使用Git和可选的Unix工具”。警告:这将覆盖Windows工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。...Windows控制台程序(例如交互式Python)必须通过“ winpty”启动才能在MinTTY中运行。 第二个选项是“使用Windows的默认控制台窗口”。...Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Python或node.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode 字体以正确显示非

    4.4K10

    使用GitHub+Hexo搭建个人博客

    Windows 控制台程序必须通过 “winpty” 启动才能在 MinTTY中运行。 第二个选项是“使用 Windows 的默认控制台窗口”。...Git将使用 Windows 的默认控制台窗口(“cmd.exe”),该窗口可以与 Win32控制台程序(如交互式 Python 或 node.js)一起使用,但默认的回滚非常有限,需要配置为使用 unicode...按 win+r,在跳出的运行窗口输入 cmd,然后点击 确定 或直接键盘敲击 Enter 打开命令行窗口。...按 win+r,在跳出的运行窗口输入 cmd,然后点击 确定 或直接键盘敲击 Enter 打开命令行窗口。...注意冒号后面有一个空格且名称应与主题文件夹的名称相同。 在本地博客文件夹右击选择 Git Bash Here 打开 Git 窗口。

    1.6K61

    Git安装详解

    需要注意的是,这将覆盖Windows中的一些工具(如"find"和"sort")。只有当你完全理解这些影响并愿意接受时,才应选择这个选项。...配置Git Bash使用的终端模拟器 相比之下,cmd的劣势是较大的,推荐选择第一个 使用MinTTY: Git Bash将使用MinTTY作为终端仿真器。...在MinTTY环境下运行Windows控制台程序时,需要使用"winpty"来启动。 使用Windows默认控制台窗口: Git将使用Windows的默认控制台窗口(cmd.exe)作为终端仿真器。...git pull默认行为 通常也是选择默认方式 默认情况下,‘git pull’ 的行为取决于 git 配置中的 merge.default 参数。...如果需要针对特定项目使用不同的用户信息,可以在该项目的目录中运行不带 --global 标志的相同命令,具体命令将会将配置限定在当前项目中。

    1.2K30

    自定义 Windows PowerShell 和 cmd 的字体

    ---- 对字体要求 当然,安装了 git 后,会自动帮我们安装 mintty,bash 风格,自定义方便,着色也很棒。如果可能,我还是更希望用 mintty。...▲ 很丑的 cmd 微软说,cmd 和 PowerShell 对字体的要求非常苛刻,在 Necessary criteria for fonts to be available in a command...这还真不是一般字体能够满足的…… 推荐可用的字体 我找了好几款字体,然而只发现下面两款字体是真正可以在 PowerShell 或 cmd 里面用的: Inziu Iosevka 作者:Belleve...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布

    7.9K42
    领券