python多线程输入字符和写入文件

用python实现:

C:\Users\wangrusheng\Downloads\pkd\zz.txt

使用了多线程,一个线程处理用户的控制台输入,另一个处理文件写入功能

功能 :
实时捕获用户输入内容
持久化存储到指定文本文件(追加模式)
支持即时退出指令exit,自动触发安全退出流程
自动创建目标文件目录(若不存在)

step1:C:\Users\wangrusheng\PycharmProjects\FastAPIProject1\hello.py

import threading
import queue
import os


def handle_input(input_queue, stop_event):
    """处理用户输入的线程函数"""
    try:
        while not stop_event.is_set():
            # 获取用户输入
            data = input("请输入内容(输入'exit'退出): ")

            # 检查退出命令
            if data.strip().lower() == 'exit':
                stop_event.set()
                print("正在保存数据并退出程序...")
                break

            # 将输入内容放入队列
            input_queue.put(data)
    except Exception as e:
        print(f"输入线程发生错误: {e}")
        stop_event.set()


def write_to_file(file_path, input_queue, stop_event):
    """处理文件写入的线程函数"""
    try:
        with open(file_path, 'a', encoding='utf-8') as f:
            while True:
                try:
                    # 获取队列内容(最多等待1秒)
                    data = input_queue.get(timeout=1)
                    f.write(f"{data}\n")
                    f.flush()  # 立即写入磁盘
                    input_queue.task_done()
                except queue.Empty:
                    # 检查是否应该退出
                    if stop_event.is_set():
                        break
                    continue
    except Exception as e:
        print(f"文件写入发生错误: {e}")
        stop_event.set()


def main():
    # 文件路径配置
    file_path = r'C:\Users\wangrusheng\Downloads\pkd\zz.txt'

    # 确保目录存在
    os.makedirs(os.path.dirname(file_path), exist_ok=True)

    # 创建线程间通信对象
    input_queue = queue.Queue()
    stop_event = threading.Event()

    # 创建并启动线程
    input_thread = threading.Thread(target=handle_input, args=(input_queue, stop_event))
    write_thread = threading.Thread(target=write_to_file, args=(file_path, input_queue, stop_event))

    input_thread.start()
    write_thread.start()

    # 等待线程结束
    input_thread.join()
    write_thread.join()
    print("程序已安全退出")


if __name__ == "__main__":
    main()

step2:运行结果

(.venv) PS C:\Users\wangrusheng\PycharmProjects\FastAPIProject1> python hello.py          
请输入内容(输入'exit'退出): 测试
请输入内容(输入'exit'退出): hello
请输入内容(输入'exit'退出): world
请输入内容(输入'exit'退出): exit
正在保存数据并退出程序...
程序已安全退出
(.venv) PS C:\Users\wangrusheng\PycharmProjects\FastAPIProject1>

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值