Python实现Tab自动补全7 min read

  • A+
所属分类:Python

 

    在我们的Linux系统中tab键给我们带来了很大的方便,可以帮助我们自动补全,快速的提高输入速度,提高工作效率,避免并减少命令输入的错误率,所以说tab键还是很有用的,但是在我们系统中Python交互窗口里面却是默认没有tab键的,所以我们自己要进行配置,配置方法如下

  

1. 编写一个python脚本

  1. #!/usr/bin/env python  
  2. # python tab file  
  3.    
  4. import sys  
  5. import readlinereadline  
  6. import rlcompleter  
  7. import atexit  
  8. import os  
  9. # tab completion  
  10. readlinereadline.parse_and_bind('tab: complete')  
  11. # history file  
  12. histfile = os.path.join(os.environ['HOME'], '.pythonhistory')  
  13. try:  
  14.   readlinereadline.read_history_file(histfile)  
  15. except IOError:  
  16.   pass  
  17.   atexit.register(readlinereadline.write_history_file, histfile)  
  18.    
  19. del os, histfile, readlinereadline, rlcompleter  

 

2. 在Python交互页面查看python模块默认存放位置

  1. >>> import sys     #<== 导入sys模块  
  2. >>> sys.path         #<== 查看Python模块存放位置  
  3. ['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/cloud_init-0.7.6-py2.7.egg', '/usr/lib/python2.7/site-packages/pip-9.0.3-py2.7.egg']  

      说明:当我们调用python模块时,python会从以上的路径中依次寻找对应的模块,如果找不到就会报错,找到将不会继续往下进行。以上的第一个路径为空,表示的是当前所在路径,以上黄色标红路径表示是专门存放第三方的Python模块的,在pytnon2.6版本目录名为dist-packages,只是在2.7以后不同了,所以我们要将tab.py放在该路径下。

 

3. 将编写的tab.py放到Python默认的模块存放位置

  1. mv tab.py /usr/lib/python2.7/site-packages  

 

4. 进入python命令行交互界面,测试

  1. >>> import tab  
  2. >>> import sys  
  3. >>> sys  
  4. sys  
  5. >>> sys.  
  6. sys.__class__(              sys.__sizeof__(             sys.copyright               sys.getfilesystemencoding(  sys.prefix  
  7. sys.__delattr__(            sys.__stderr__              sys.displayhook(            sys.getprofile(             sys.ps1  
  8. sys.__dict__                sys.__stdin__               sys.dont_write_bytecode     sys.getrecursionlimit(      sys.ps2  
  9. sys.__displayhook__(        sys.__stdout__              sys.exc_clear(              sys.getrefcount(            sys.py3kwarning  
  10. sys.__doc__                 sys.__str__(                sys.exc_info(               sys.getsizeof(              sys.pydebug  
  11. sys.__excepthook__(         sys.__subclasshook__(       sys.exc_type                sys.gettrace(               sys.setcheckinterval(  
  12. sys.__format__(             sys._clear_type_cache(      sys.excepthook(             sys.hexversion              sys.setdlopenflags(  
  13. sys.__getattribute__(       sys._current_frames(        sys.exec_prefix             sys.long_info               sys.setprofile(  
  14. sys.__hash__(               sys._debugmallocstats(      sys.executable              sys.maxint                  sys.setrecursionlimit(  
  15. sys.__init__(               sys._getframe(              sys.exit(                   sys.maxsize                 sys.settrace(  
  16. sys.__name__                sys._mercurial              sys.exitfunc(               sys.maxunicode              sys.stderr  
  17. sys.__new__(                sys.api_version             sys.flags                   sys.meta_path               sys.stdin  
  18. sys.__package__             sys.argv                    sys.float_info              sys.modules                 sys.stdout  
  19. sys.__reduce__(             sys.builtin_module_names    sys.float_repr_style        sys.path                    sys.subversion  
  20. sys.__reduce_ex__(          sys.byteorder               sys.getcheckinterval(       sys.path_hooks              sys.version  
  21. sys.__repr__(               sys.call_tracing(           sys.getdefaultencoding(     sys.path_importer_cache     sys.version_info  
  22. sys.__setattr__(            sys.callstats(              sys.getdlopenflags(         sys.platform                sys.warnoptions  
  23. >>> sys.  

 

 

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: