Python 解释器交互模式查看整个命令历史和清除历史,以及清屏和调用Shell命令

py.webp

使用 Python 解释器交互模式

在终端(tty)输入并执行指令时,我们说解释器是运行在 交互模式(interactive mode)。在这种模式中,它会显示 主提示符(primary prompt),提示输入下一条指令,通常用三个大于号(>>>)表示;连续输入行的时候,它会显示 次要提示符,默认是三个点(…)。进入解释器时,它会先显示欢迎信息、版本信息、版权声明,然后就会出现提示符:

$ python3
Python 3.9 (default, June 4 2019, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
  • 多行指令需要在连续的多行中输入。比如,以 if 为例:
>>> the_world_is_flat = True
>>> if the_world_is_flat:
...     print("Be careful not to fall off!")
...
Be careful not to fall off!

me.py.gif

Python 交互模式查看整个命令历史

  • 如何在交互式python中看到整个命令历史?
import readline
def history():
    for i in range(readline.get_current_history_length()):
        print(readline.get_history_item(i + 1))
    print(':: Clear_History:  readline.clear_history() ')
  • readline.get_current_history_length() 获取预设的历史命令条数。
  • readline.get_history_item(id) 获取id指定的历史命令。
  • readline.clear_history() 清除历史命令记录
  • readline.read_history_file(‘test.py’) 把test.py文件读取到历史命令

Python 自动补全模块 readline 解析

  • readline模块定义了一系列函数用来读写Python解释器中历史命令,并提供自动补全命令功能。这个模块可以通过relcompleter模块直接调用,模块中的设置会影响解释器中的交互提示,以及内置函数raw_input()和input()提供的提示。
  • readline模块定义了以下方法: 输入 readline. 然后按 TAB 就能自动补全显示
>>> readline.
readline.add_history(                          readline.read_history_file(
readline.append_history_file(                  readline.read_init_file(
readline.clear_history(                        readline.redisplay(
readline.get_begidx(                           readline.remove_history_item(
readline.get_completer(                        readline.replace_history_item(
readline.get_completer_delims(                 readline.set_auto_history(
readline.get_completion_type(                  readline.set_completer(
readline.get_current_history_length(           readline.set_completer_delims(
readline.get_endidx(                           readline.set_completion_display_matches_hook(
readline.get_history_item(                     readline.set_history_length(
readline.get_history_length(                   readline.set_pre_input_hook(
readline.get_line_buffer(                      readline.set_startup_hook(
readline.insert_text(                          readline.write_history_file(
readline.parse_and_bind(

使用 Python 交互模式学习,使用 history() 函数可以方便提取整理命令语句

cmd.png

import requests
r = requests.get(url='http://192.168.1.150:8080')
r.text
r.content
str(r.content)
# 返回的数据类型
# response.text 返回的是一个 unicode 型的文本数据
# response.content 返回的是 bytes 型的二进制数据

111.PNG

Python 交互模式 历史命令、清屏和调用Shell模块 git.io/me.py

:: Usage:  python -i me.py     or [import me] , import the module me.py
:: Function:  cls()  ls()  cd(path)  cat(file)  pwd()  bash()  info()  history()
#-*- coding: UTF-8 -*- 
import sys, os, readline

# define Color
Green = '33[32m'; Red = '33[31m'
GreenBG = '33[42;37m'; RedBG = '33[41;37m'
Yellow = '33[0;33m'; SkyBlue = '33[0;36m'; Font = '33[0m'

sys.ps1 = Red + '>' + Yellow + '>' + SkyBlue + '> ' + Font
sys.ps2 = SkyBlue + '... ' + Font

def cls():
    # print('x1bc')
    os.system('clear')

def pwd():
    print( SkyBlue + os.getcwd(), end = ' ')

def ls():
    cur_path = os.getcwd()
    os.system('ls -l ' + cur_path)
    pwd()

def cd(path = '.'):
    os.chdir(path)
    pwd()

def cat(file = 'me.py'):
    with open(file, 'r') as f:
        print(f.read())

def bash():
    os.system('bash')

def history():
    for i in range(readline.get_current_history_length()):
        print(readline.get_history_item(i + 1))
    print( Yellow   + ':: Clear_History:  readline.clear_history() ')

def info():
    print( SkyBlue + ':: Usage:  ' + Green + 'python -i me.py' + Yellow + '     or [import me] , import the module me.py')
    print( Green   + ':: Function:  cls()  ls()  cd(path)  cat(file)  pwd()  bash()  info()  history()')
    pwd()

info(); c = cls; h = history

python 变量可以指向函数

以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码:

>>> f = abs
>>> f
<built-in function abs>
>>> f(-8)
8
  • 所以执行 c = cls; h = history 语句,就可以 c 和 h 简写调用函数了

python windows 安装 readline 模块

python -m pip install pyreadline
# 不能直接用pip install pyreadline

相关推荐: Debian 手工安装 Transmission 和设置中文教程 以及一键脚本

Debian 安装 Transmission 教程和一键脚本当然使用另一篇文章的 Dokcer 命令安装会更加简单,这个文章,主要是让人了解配置原理一键安装 transmission 服务脚本wget https://raw.githubusercontent…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论