zoukankan      html  css  js  c++  java
  • (转)模块readline解析

    模块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)
  • 相关阅读:
    利用相关的Aware接口
    java 值传递和引用传递。
    权限控制框架Spring Security 和Shiro 的总结
    优秀代码养成
    Servlet 基础知识
    leetcode 501. Find Mode in Binary Search Tree
    leetcode 530. Minimum Absolute Difference in BST
    leetcode 543. Diameter of Binary Tree
    leetcode 551. Student Attendance Record I
    leetcode 563. Binary Tree Tilt
  • 原文地址:https://www.cnblogs.com/liujiacai/p/7838294.html
Copyright © 2011-2022 走看看