当前位置: 首页 > news >正文

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

用python实现:

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

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

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

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

import threading
import queue
import osdef 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():breakcontinueexcept 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

相关文章:

  • Centos7.9 安装mysql5.7
  • 【CV数据集】Visdrone2019无人机目标检测数据集(YOLO、VOC、COCO格式)
  • 今日行情明日机会——20250430
  • 11.多边形的三角剖分 (Triangulation) : 画廊问题
  • 深挖Java基础之:变量与类型
  • npm命令介绍(Node Package Manager)(Node包管理器)
  • 实验三 软件黑盒测试
  • 人工智能100问☞第14问:人工智能的三大流派(符号主义、联结主义、行为主义)有何区别?
  • C和指针笔记2——编译、链接
  • 攻防世界 dice_game
  • 模型开发之前的核心工作
  • 黄雀在后:外卖大战新变局,淘宝+饿了么开启电商大零售时代
  • Java大师成长计划之第9天:高级并发工具类
  • 存储器层次结构:理解计算机记忆的金字塔
  • 模型之FIM(Fill-In-the-Middle)补全
  • 12.多边形的三角剖分 (Triangulation) : Fisk‘s proof
  • 销售预测业务优化设计方案汇报P99(99页PPT)(文末有下载方式)
  • 总结C++中的STL
  • C++笔记-继承(下)(包含派生类的默认成员函数,菱形继承等)
  • 代码随想录单调栈part1
  • 海港负国安主场两连败,五强争冠卫冕冠军开始掉队
  • 短剧迷|《权宠》一出,《名不虚传》
  • 奥斯卡新规:评委必须看完影片再投票;网友:以前不是啊?
  • 解放日报:浦东夯实“热带雨林”式科创生态
  • 证监会:坚决拥护党中央对王建军进行纪律审查和监察调查决定
  • 中国海警位中国黄岩岛领海及周边区域执法巡查