【工作中的Python】随机点名小脚本

背景:项目组每周的例会中,有一项固定内容就是技术分享,可以是与工作相关或无关的任何技术主题。进行技术分享讲解的同学是随机抽签的。由此做了一个Python的小脚本用于抽取姓名。

脚本内容如下:

#!/usr/bin/python

import os
import sys
import tty, termios
import random

name_list = ["member_1","member_2","member_3"]
input = ''
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)

try:
    tty.setraw(fd)
    while 'q' != input:
        sys.stdout.write(random.choice(name_list) + "\r\n")
        input = sys.stdin.read(1)
finally:
    termios.tcgetattr(fd, termios.TCSADRAIN, old_settings)

代码说明:

随机选择

        $ random.choice从序列中获取一个随机元素。

        $ 其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。

        $ sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。

文件描述符

        $ 获取底层实现使用请求从操作系统的I / O操作的文件描述符:

fileObject.fileno(); 

 

        $ 脚本中获取了标准输入(终端)的文件描述符,后续用于获取输入和向屏幕输出。其实读取标准输入的话,我更喜欢用raw_input()这个函数,不过反正都实现了。输入的时候使用了sys.stdout.write()的原因是,在通过termios改变了终端的属性后,使用print输出时格式会发生变化——如果抽取多次,则每次输出的名字都会在前次输出的下一行并后延一个tab的位置,造成错位,不知道为什么。采用了sys.stdout.write()后就正常了。

Termios与tty模块

        $ (只能在Unix及其派生的系统中使用)这两个模块配合是为了实现程序实时响应用户的键盘输入。运行程序时,输入‘q'则直接退出程序,而不需要按下回车。

        $ 首先获取当前终端配置

old_settings = termios.tcgetattr(fd)

 

        $ 设置终端为非阻塞的输入方式,按字符响应键盘输入

tty.setraw(fd)

 

        $ 还原终端配置

termios.tcgetattr(fd, termios.TCSADRAIN, old_settings)

 

转载于:https://www.cnblogs.com/wantsmorewu/p/4131826.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值