刚学习python,其实一切都很好接受,因为有过C语言的基础,感觉一切都来得那么自然,python极其精简的语法,让我真心是爱上这种语言!相信往后python一定会在我的IT生涯中大放光彩!
好,废话说完了,入正题。
1.问题引出:默认情况下python交互界面的tab键
在linux下,或在路由器、交换机上,按tab键按得很爽,什么不完整的,tab一下都出来了,无奈,在linux中安装的python,默认情况是没有tab功能的,也就是在python的交互界面中,tab是没有办法补全的,python的交互界面只是把它当作正常的多个空格补全来处理:
1
2
3
4
5
6
|
xpleaf@py:~/seminar6/day1$ python
Python
2.7
.
3
(
default
, Aug
1
2012
,
05
:
14
:
39
)
[GCC
4.6
.
3
] on linux2
Type
"help"
,
"copyright"
,
"credits"
or
"license"
for
more information.
>>>
import
sys
>>> sys. =====>按tab键,想看看sys的子模块,结果就是按出了一大堆空格键
|
是啊,这也太恶心了!没有tab键,宝宝不开心!
2.解决方案:自行导入tab键的模块--创建tab.py模块文件
问题是,没有tab键的模块,怎么办?百度一下吧!不过当时确实找了好多,都找不到一个在我自己的实验环境中可以使用的,总是提示各种错误!还好,总算让我找到一个可以使用的,下面直接给出tab.py的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/usr/bin/env python
# python startup file
import
sys
import
readline
import
rlcompleter
import
atexit
import
os
# tab completion
readline.parse_and_bind(
'tab: complete'
)
# history file
histfile = os.path.join(os.environ[
'HOME'
],
'.pythonhistory'
)
try
:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
|
把上面的代码,保存成tab.py文件,然后保存到下面的指定路径之一:
1
2
3
|
>>>
import
sys
>>> sys.path
[
''
,
'/usr/lib/python2.7'
,
'/usr/lib/python2.7/plat-linux2'
,
'/usr/lib/python2.7/lib-tk'
,
'/usr/lib/python2.7/lib-old'
,
'/usr/lib/python2.7/lib-dynload'
,
'/usr/lib/python2.7/dist-packages'
,
'/usr/lib/python2.7/dist-packages/PIL'
,
'/usr/lib/python2.7/dist-packages/gst-0.10'
,
'/usr/lib/python2.7/dist-packages/gtk-2.0'
,
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client'
,
'/usr/lib/python2.7/dist-packages/ubuntuone-client'
,
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel'
,
'/usr/lib/python2.7/dist-packages/ubuntuone-couch'
,
'/usr/lib/python2.7/dist-packages/ubuntuone-installer'
,
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol'
]
|
为了省事点,我直接把tab.py文件放到/usr/lib/python2.7这个目录下面好了:
1
2
3
|
xpleaf@py:~/seminar6/day1$ sudo mv tab.py /usr/lib/python2.
7
/
xpleaf@py:~/seminar6/day1$ ll /usr/lib/python2.
7
/tab.py
-rw-rw-r--
1
xpleaf xpleaf
419
8
月
6
23
:
53
/usr/lib/python2.
7
/tab.py
|
3.方案测试:导入tab模块后,可使用tab键补全
下面就可以爽爽地使用tab键补全了,不过还是要先在python的交互界面中导入一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
xpleaf@py:~/seminar6/day1$ python
Python
2.7
.
3
(
default
, Aug
1
2012
,
05
:
14
:
39
)
[GCC
4.6
.
3
] on linux2
Type
"help"
,
"copyright"
,
"credits"
or
"license"
for
more information.
>>>
import
sys ===>导入sys模块只是为了下面对tab键补全做测试
>>>
import
tab ===>这才是重点
>>> sys. ===>输入sys.后按两次tab键
sys.__class__( sys.exit(
sys.__delattr__( sys.exitfunc(
sys.__dict__ sys.flags
sys.__displayhook__( sys.float_info
sys.__doc__ sys.float_repr_style
sys.__excepthook__( sys.getcheckinterval(
sys.__format__( sys.getdefaultencoding(
sys.__getattribute__( sys.getdlopenflags(
sys.__hash__( sys.getfilesystemencoding(
sys.__init__( sys.getprofile(
sys.__name__ sys.getrecursionlimit(
sys.__new__( sys.getrefcount(
sys.__package__ sys.getsizeof(
sys.__reduce__( sys.get
trace
(
sys.__reduce_ex__( sys.hexversion
sys.__repr__( sys.long_info
sys.__setattr__( sys.maxint
sys.__sizeof__( sys.maxsize
sys.__stderr__ sys.maxunicode
sys.__stdin__ sys.meta_path
sys.__stdout__ sys.modules
sys.__str__( sys.path
sys.__subclasshook__( sys.path_hooks
sys._clear_type_cache( sys.path_importer_cache
sys._current_frames( sys.platform
sys._getframe( sys.prefix
sys._mercurial sys.ps1
sys.api_version sys.ps2
sys.argv sys.py3kwarning
sys.builtin_module_names sys.pydebug
sys.byteorder sys.setcheckinterval(
sys.call_tracing( sys.setdlopenflags(
sys.callstats( sys.setprofile(
sys.copyright sys.setrecursionlimit(
sys.displayhook( sys.set
trace
(
sys.dont_write_bytecode sys.stderr
sys.exc_clear( sys.stdin
sys.exc_info( sys.stdout
sys.exc_type sys.subversion
sys.excepthook( sys.version
sys.exec_prefix sys.version_info
sys.executable sys.warnoptions
>>> sys.
|
感觉好极了!虽然每次进入python的交互界面都要重新再导入一次tab模块,可是有总比没有好!对于我这样的初学者来说,已经很满足啦!
本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1682449,如需转载请自行联系原作者