Python实战:基于文件读写的简易聊天机器人

远山来客
远山来客
发布时间:2026-10-14| 5人浏览过
原创

本文介绍如何利用Python的文件读写功能,结合字典匹配与定时轮询机制,开发一个简易的本地聊天机器人。通过监听指定文本文件的变化,程序可实现预设回复或复读功能,适合Python初学者理解IO操作与基础逻辑控制。

一、前言

在初步掌握Python文件读写操作后,本文通过一个趣味项目来巩固所学知识,并复习相关基础概念。


import time

doc_local='D:\learning_folder\interaction.txt'

def iRead():
    fr = open(doc_local, 'r')
    message=fr.read()
    return message
def iWrite(message):
    fw = open(doc_local, 'w')
    fw.write(message)
    fw.close()
def dTime(num):
    a=time.time()
    b=time.time()
    while (b-a)<num:
        b=time.time()
    return None
answer={'i am temmie':'you are temmie? who am i?','temmie':'temmie!!!','wang!':'wangwangwang!!!'}
iWrite('test begin')
message0 = iRead()
print(message0)
while True:
    dTime(1.0000000)
    mes = iRead()
    if mes!=message0:
        v=answer.get(mes)
        if v==None:
            if mes=='q' :
                print('退出运行')
                break
            else:
                print('message:', mes, end='\t')
                a_out=('temmie say again:{0}'.format(mes))
                message0 = a_out
                iWrite(a_out)
                print(a_out)
        else:
            print('message:', mes, end='\t')
            b_out=('{0}'.format(answer.get(mes)))
            message0 =b_out
            iWrite(b_out)
            print('answer:',b_out)

该项目的运行逻辑如下:用户在指定位置的记事本文件中输入内容并保存,程序会读取该文件并生成回复。若输入内容匹配预设字典中的键,则返回对应的预设回答;若未匹配到任何预设内容,程序将作为“复读机”重复用户输入的内容。

代码实现中,每次读取到的输入与生成的回复均会被打印输出,以便观察交互过程。

二、效果演示

除了基础对话,该机器人还支持进行“接龙”游戏(如crepper或成语接龙)。如果用户时间充裕,可以尝试通过这种方式与机器人进行更复杂的互动。

三、完整代码

核心代码主要包含三个自定义函数,分别负责读取文件内容、写入文件内容以及实现定时等待功能。


def iRead():
    fr = open(doc_local, 'r')
    message=fr.read()
    return message
def iWrite(message):
    fw = open(doc_local, 'w')
    fw.write(message)
    fw.close()
def dTime(num):
    a=time.time()
    b=time.time()
    while (b-a)<num:
        b=time.time()
    return None

其中,`answer`变量被定义为一个字典,用于存储预设的问答对。

程序启动时,首先调用写入函数将初始内容“test begin”写入文件,以清空之前的历史记录并提示程序开始运行。随后读取文件内容,此时读取到的值应为'test begin'。


iWrite('test begin')
message0 = iRead()

接下来进入一个无限循环,只有当检测到用户输入字符'q'时,循环才会终止并退出程序。

在循环内部,程序每隔1秒读取一次文件内容。如果文件内容与上一次读取的值相同,则视为用户未进行新输入;如果文件内容发生变化,则将该变化内容作为键在预设字典中进行检索。若字典返回None,表示无对应预设答案,程序执行复读逻辑;若返回具体值,则输出该预设回复。


while True:
    dTime(1.0000000)
    mes = iRead()
    if mes!=message0:
        v=answer.get(mes)
        if v==None:
            if mes=='q' :
                print('退出运行')
                break
            else:
                print('message:', mes, end='\t')
                a_out=('temmie say again:{0}'.format(mes))
                message0 = a_out
                iWrite(a_out)
                print(a_out)
        else:
            print('message:', mes, end='\t')
            b_out=('{0}'.format(answer.get(mes)))
            message0 =b_out
            iWrite(b_out)
            print('answer:',b_out)

到此这篇关于Python实战整活之聊天机器人的文章就介绍到这了,更多相关python聊天机器人内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。