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()
$