第十四章:应用构建模块-readline: GNU readline库-配置readline

14.3 readline: GNU readline库
readline模块提供了GNU readline库的一个接口。它可以用于改进交互式命令行程序,使之更易于使用,例如,增加命令行文本完成,即"tab完成"功能(tab completion)。

说明:由于readline与控制台内容交互,所以如果打印调试消息,则会很难看出哪些是示例代码完成的工作,而哪些是radline自动完成的工作。下面的例子使用logging模块将调试信息写到一个单独的文件。每个示例都会显示日志输出。
说明:默认情况下,并非所有平台都提供readline所需的GNU库。如果你的系统确实不包括这些库,那么在安装依赖库之后可能需要重新编译Python解释器以启用这个模块。Pyhton Package Index在gnureadline名之下还发布了这个库的一个独立版本。

14.3.1 配置readline
有两种方法配置底层radline库,可以使用一个配置文件,或者利用parse_and_bind()函数。配置选项包括调用完成特性的按键绑定,编辑模式(vi或emacs),以及其他一些值。有关的详细信息可以参考GNU Readline库的文档。

try:
    import gnureadline as readline
except ImportError:
    import readline

readline.parse_and_bind('tab: complete')
readline.parse_and_bind('set editing-mode vi')

while True:
    line = input('Prompt ("stop" to quit):')
    if line == 'stop':
        break
    print('ENTERED: {!r}'.format(line))

这个配置可以作为指令存储在一个文件中,由库通过一个调用来读取。如果myreadline.rc包含以下内容。

# Turn on tab completion.
tab: complete
# Use vi editing mode instead of emacs.
set editing-mode vi

则可以用read_init_file()来读取这个文件。

try:
    import gnureadline as readline
except ImportError:
    import readline

readline.read_init_file('myreadline.rc')

while True:
    line = input('Prompt ("stop" to  quit): ')
    if line == 'stop':
        break
    print('ENTERED: {!r}'.format(line))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值