模块readline解析

原文:https://www.cnblogs.com/fireflow/p/4841413.html

readline模块定义了一系列函数用来读写Python解释器中历史命令,并提供自动补全命令功能。这个模块可以通过relcompleter模块直接调用,模块中的设置会影响解释器中的交互提示,以及内置函数raw_input()和input()提供的提示。

        readline模块定义了以下方法:
        readline.parse_and_bind(string):解析并执行命令行初始化文件。
        readline.get_line_buffer():返回当前命令行缓存的内容。
        readline.insert_text(string):插入到当前行。
        readline.read_init_file([filename]):解析一个命令行初始化文件。
        readline.read_history_file([filename]):读取历史命令文件,默认为~/.history
        readline.write_history_file([filename]):保存历史命令文件,默认为~/.history
        readline.get_history_length():获取预设的历史命令条数。负数意味着不限制条数大小。
        readline.set_history_length(length):设置要保存到历史命令文件中的命令条数,write_history_file()使用这个数字对历史命令文件进行修改。
        readline.get_current_history_length():返回当前历史文件中历史命令的条数。
        readline.get_history_item(index):获取index索引指定的历史命令。
        readline.remove_history_item(pos):删除指定位置的历史命令。
        readline.replace_history_item(pos, line) :使用给定命令替换指定位置的命令。
        readline.redisplay() :根据命令行缓存实时更新当前屏幕的显示。
        readline.set_startup_hook([function]) :设置或删除钩子函数,如果指定了函数,就将其设为钩子函数,如果没有指定或者设置为None,所有已经安装的钩子函数将被移除,钩子函数在命令行输出提示前执行。
        readline.set_pre_input_hook([function]):跟set_startup_hook()方法类似,但是钩子函数是在提示输入完之后,命令行开始读取字符串之前执行。
        readline.set_completer([function]):如果提供了函数,则用作自动完成命令函数,如果忽略或者设置为None,则移除之前设置的函数。命令自动完成函数形式如function(text,state),text为命令行中输入的字符串,state为选择的的补全命令索引。
        readline.get_completer():返回自动完成命令函数。
        readline.get_completion_type() :返回自动完成的类型。
        readline.get_begidx() :获取命令行tab自动补全范围的第一个值的索引。
        readline.get_endidx() :获取命令行tab自动补全范围的最后一个值的索引。
        readline.set_completer_delims(string) :设置自动补全命令之间的分隔符。
        readline.get_completer_delims() :获取分隔符。
        readline.set_completion_display_matches_hook([function]) :设置或者移除自动完成显示函数。
        readline.add_history(line) :添加最后一条输入的命令到历史文件中。
        示例:
        下面的例子使用readline模块从.pyhist中读取历史命令,并自动保存历史命令到这个文件中。
  1. import os
  2. histfile = os.path.join(os.environ["HOME"],".pyhist")
  3. try:
  4. readline.read_history_file(histfile)
  5. exceptIOError:
  6. pass
  7. import atexit
  8. atexit.register(readline.write_history_file, histfile)
  9. del os, histfile
        下面的例子通过继承code.InteractiveConsole来支持历史命令的读写。
  1. import code
  2. import readline
  3. import atexit
  4. import os
  5. classHistoryConsole(code.InteractiveConsole):
  6. def __init__(self, locals=None, filename="<console>",
  7. histfile=os.path.expanduser("~/.console-history")):
  8. code.InteractiveConsole.__init__(self, locals, filename)
  9. self.init_history(histfile)
  10. def init_history(self, histfile):
  11. readline.parse_and_bind("tab: complete")
  12. if hasattr(readline,"read_history_file"):
  13. try:
  14. readline.read_history_file(histfile)
  15. exceptIOError:
  16. pass
  17. atexit.register(self.save_history, histfile)
  18. def save_history(self, histfile):
  19. readline.write_history_file(histfile)

(转)模块readline解析的更多相关文章

  1. GNU自动补全模块readline解析

    readline模块定义了一系列函数用来读写Python解释器中历史命令,并提供自动补全命令功能.这个模块可以通过relcompleter模块直接调用,模块中的设置会影响解释器中的交互提示,以及内置函 ...

  2. Unity加载模块深度解析(Shader)

    作者:张鑫链接:https://zhuanlan.zhihu.com/p/21949663来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 接上一篇 加载模块深度解析(二 ...

  3. Unity加载模块深度解析(网格篇)

    在上一篇 加载模块深度解析(一)中,我们重点讨论了纹理资源的加载性能.这次,我们再来为你揭开其他主流资源的加载效率. 这是侑虎科技第53篇原创文章,欢迎转发分享,未经作者授权请勿转载.同时如果您有任何 ...

  4. PS常见错误-无法完成请求,因为文件格式模块不能解析该文件

    无法完成请求,因为文件格式模块不能解析该文件 将图片格式变成.jpg格式就可以了

  5. perl6 JSON::Fast模块json解析的使用

    关于JSON: JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,语法简单,各种语言都有相应的库或者模块支持. 因为JSON非常小巧,解析起来又非常简单,我 ...

  6. nodejs模块xml2js解析xml的坑

    在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...

  7. seajs模块路径解析 简单总结

    最近在试着用 seajs + grunt 搭建项目雏形, 遇到的最大的问题就是 seajs 命名与调用, 简单总结一下. 模块调用 seajs中调用模块有两种方式,seajs.use(ID) . re ...

  8. nodejs 实践:express 最佳实践(七) 改造模块 connect2 解析

    nodejs 实践:express 最佳实践(七) 改造模块 connect2 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的 ...

  9. Nginx_handler模块发开(hello模块结构解析)

    声明:请在文章页面明显位置给出原文连接 http://www.cnblogs.com/paulweihan/p/4654173.html,否则保留追究法律责任的权利. 近期查了非常多资料.入门的样例都 ...

随机推荐

  1. 关于Java异常一段很有意思的代码

    今天学习了Java的异常,讲到try-catch-finally时,老师演示了一段代码,觉得很有意思,很能反映出其执行的过程,让自己有点绕,特意记录一下. 只要代码执行到try代码内部, 不管有没有异 ...

  2. 团队项目第六周-Alpha阶段项目复审(深海划水队)

    经小组讨论后得出以下排名: 队名 优点 缺点 排名 大猪蹄子队 界面优美,功能简洁易懂,单词解释较为完善 互动方式.操作简易性有待优化,有部分功能尚未完成 1 Running Duck队 基本功能已经 ...

  3. 使用"*"通配符来选择文件

    Include 方法和IncludeDirectory 方法中的搜索模式中指定的虚拟路径可以接受一个"*"通配符字符作为前缀或后缀,以在最后一个路径段.搜索字符串是大小写不敏感的. ...

  4. Android动态显示或隐藏密码框中的密码(Android学习笔记)

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  5. appstore开发者 名称修改

    1.前提是开发者账号为企业账号 CSDN大佬写的,应该没错

  6. java 复习总结

    java 复习总结 命名方法 创建文件的名称应该和类的名称一致,不然会报错. 类采用首字母大写的方式来命名,如果是多个单词的类名,则每个单词首字母都大写,例如:HelloWorld . 方法采用驼峰命 ...

  7. luoguP4172 [WC2006]水管局长

    https://www.luogu.org/problemnew/show/P4172 考虑倒序处理所有操作 先把不会被删掉的边加入图中,LCT 维护最小生成树,再倒序插入每一条边,如果边的 ( l, ...

  8. Thinkphp5.0 路由

    路由定义: 有两种方式: (1).动态注册: eg: Route::rule('hello','index/index/hello','GET'); (2)配置式: eg: return [ 'pat ...

  9. Flink生态与未来

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  10. [CQOI2006]凸多边形(半平面交)

    很明显是一道半平面交的题. 先说一下半平面交的步骤: 1.用点向法(点+向量)表示直线 2.极角排序,若极角相同,按相对位置排序. 3.去重,极角相同的保留更优的 4.枚举边维护双端队列 5.求答案 ...