Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python GNU readline Interface


readline เป็นโมดูลเฉพาะของ UNIX มันกำหนดฟังก์ชั่นจำนวนหนึ่งเพื่ออ่านและเขียนไฟล์ประวัติในวิธีที่ง่ายกว่าจากล่ามไพ ธ อน เราสามารถใช้โมดูลนี้โดยตรงหรือใช้ rlcompleter โมดูล. การตั้งค่าโมดูลนี้อาจส่งผลต่อพรอมต์ของเมธอดอินพุท () และพรอมต์แบบโต้ตอบ

สำหรับระบบที่ใช้ MAC (บน MAC OS X) readline . นี้ โมดูลสามารถใช้งานได้โดยใช้ไลบรารี libedit การกำหนดค่า libedit นั้นแตกต่างจาก readline ของ GNU

ในการใช้โมดูลนี้ เราจำเป็นต้องนำเข้าโมดูล readline ในโค้ด python

import readline

วิธีการบางอย่างของ GNU readline มีดังนี้ -

ซีเนียร์ ฟังก์ชันและคำอธิบาย
1

readline.parse_and_bind(สตริง)

ใช้บรรทัดเดียวจากไฟล์ readline init และดำเนินการหลังจากแยกวิเคราะห์

2

readline.get_line_buffer()

รับเนื้อหาปัจจุบันของบัฟเฟอร์บรรทัด

3

readline.insert_text(string)

แทรกข้อความลงในบรรทัดคำสั่ง

4

readline.read_init_file([ชื่อไฟล์])

แยกวิเคราะห์ไฟล์การเริ่มต้น readline ค่าเริ่มต้นคือค่าสุดท้ายที่ให้ไว้

5

readline.read_history_file([ชื่อไฟล์])

อ่านประวัติจากไฟล์ที่กำหนด ชื่อไฟล์เริ่มต้นคือ ~/.history

6

readline.write_history_file([ชื่อไฟล์])

บันทึกประวัติลงในไฟล์ที่กำหนด ไฟล์เริ่มต้นคือ ~/.history

7

readline.clear_history()

ล้างประวัติปัจจุบัน

8

readline.get_history_length()

รับความยาวสูงสุดของไฟล์ประวัติ

9

readline.set_history_length(length)

กำหนดความยาวไฟล์ประวัติ (จำนวนบรรทัด)

10

อ่านไลน์. get_current_history_length ()

รับจำนวนบรรทัดทั้งหมดในไฟล์ประวัติ

11

readline.get_history_item(ดัชนี)

รับรายการประวัติโดยใช้ดัชนี

12

readline.remove_history_item(pos)

ลบประวัติตามตำแหน่ง

13

readline.replace_history_item(pos, line)

แทนที่ประวัติตามตำแหน่ง

14

readline.redisplay()

แสดงเนื้อหาปัจจุบันของบัฟเฟอร์บรรทัด

15

readline.get_begidx()

รับดัชนีเริ่มต้นของขอบเขตความสมบูรณ์ของแท็บ

16

readline.get_endidx()

รับดัชนีสิ้นสุดของขอบเขตความสมบูรณ์ของแท็บ

17

readline.add_history(line)

ต่อท้ายบรรทัดที่ท้ายบัฟเฟอร์ประวัติ

รหัสนี้ใช้เพื่ออ่านไฟล์ประวัติและเก็บไว้ในโฮมไดเร็กทอรี รหัสจะทำงานเมื่อมีการคอมไพล์และรันในโหมดโต้ตอบ หลังจากออกจาก python shell แล้ว มันจะเก็บไฟล์ประวัติไว้

โค้ดตัวอย่าง

import readline as rl
import os
import atexit

my_hist_file = os.path.join(os.path.expanduser("~"), ".my_python_hist")
try:
   rl.read_history_file(my_hist_file)
   rl.clear_history()
except FileNotFoundError:
   pass
    
print("Done")
atexit.register(rl.write_history_file, my_hist_file)
del os, my_hist_file

เรียกใช้ในเชลล์แบบโต้ตอบ -

$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exec(open("./readline_task.py").read())
Done
>>> print("readline_task.py is ececuted")
readline_task.py is ececuted
>>> print("History File will be updated after exit.")
History File will be updated after exit.
>>> 2 ** 10
1024
>>> 2 ** 20
1048576
>>> 2 ** 30
1073741824
>>> import math
>>> math.factorial(6)
720
>>> exit()
$ cat ~/.my_python_hist
print("readline_task.py is ececuted")
print("History File will be updated after exit.")
2 ** 10
2 ** 20
2 ** 30
import math
math.factorial(6)
exit()
$