python学习----msvcrt模块

描述

  • 当stdin流被重定向到文件或管道时,只能获取输入源文本,无法再用它读取用户交互输入。
  • 要实现stdin接收输入并利用console作为用户交互,需要使用特殊的借口从键盘,而非标准输入,直接读取用户输入。python标准库msvcrt模块提供了该功能。

方法

控制输入输出( console I/O )

  • msvcrt.putch(char) 用于没有缓存地输出一个字节型char,且不会自动换行

>>>import msvcrt
>>>msvcrt.putch(b'a')  
a>>>

注意:

  • 该函数接收的的字符必须是byte型
  • 该函数只能接收一个字符,而非字符串
  • 其输出后不会自动换行
  • msvcrt.putwch(unicode_char) 和上一个类似,唯一的区别在于msvcrt.putwch的接收范围更大,允许接收a Unicode value
>>>import msvcrt
>>>msvcrt.putch('a')  
a>>>
  • msvcrt.getche() 用于读取一个键盘按键,并且以byte型返回,但是不会在控制台(一般是命令行)回显。
>>>import msvcrt
>>>msvcrt.getch()  #在键盘上按下 a
b'a'
>>>ans=msvcrt.getch() #此时,在键盘上按下a,console里并不会有回显,而是将输入存在了ans变量里
>>>ans 
b'a'

注意:

  • 输入完成后,无需按下回车,该函数就会自动结束。
  • 此方法无法读取ctrl+c
  • 若按下功能键,将返回其相应的转义字符或十六进制编码,当按下特殊的功能键时,会返回’\000’或者’\xe0’(python手册里是这样写的,但这个特殊的功能键是什么,我还没搞清楚)
  • python手册原文: Read a keypress and return the resulting character as a byte string. Nothing is echoed to the console. This call will block if a keypress is not already available, but will not wait for Enter to be pressed. If the pressed key was a special function key, this will return or ‘\xe0’; the next call will return the keycode. The Control-C keypress cannot be read with this function.
  • msvcrt.getwch() 和上一个类似,唯一的区别在于msvcrt.getwch()的接收范围更大,允许接收a Unicode value
  • msvcrt.getche() 和 msvcrt.getch() 类似,唯一的区别在于msvcrt.getche()会将输入回显在console中
>>>import msvcrt
>>>msvcrt.getche() #在键盘上按下a
>>>ab'a' #前一个a是对输入的回显,b'a'是返回的结果
>>>ans=msvcrt.getche() #在键盘上按下a
a>>> #这里的a是对输入的回显
>>>ans #查看ans的值
b'a'  #结果
>>>

文件操作 file operations

待续

猜你喜欢

转载自blog.csdn.net/zyl_wjl_1413/article/details/84864482