当前位置: 首页 > 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

http://www.xdnf.cn/news/246367.html

相关文章:

  • 关系型数据库设计指南
  • 2025五一杯数学建模竞赛选题建议+初步分析
  • terraform实现本地加密与解密
  • sftp连接报错Received message too long 168449893
  • 大鱼吃小鱼开源
  • leetcode 977. Squares of a Sorted Array
  • 【免费】1992-2021年各省GDP数据/各省地区生产总值数据
  • GoogleTest:简单示例及ASSERT/EXPECT说明
  • [FPGA 官方 IP] Binary Counter
  • 多节点监测任务分配方法比较与分析
  • 深度学习-神经网络参数优化的约束与迭代策略
  • 今日行情明日机会——20250430
  • python拜占庭将军
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的电商直播流量转化路径研究
  • 计算机操作系统知识集合
  • 2025五一杯B题五一杯数学建模思路代码文章教学: 矿山数据处理问题
  • android 中的AMS 和 WMS
  • 【Day 14】HarmonyOS分布式数据库实战
  • linux下安装ollama网不好怎么办?
  • C++类和对象
  • c++文字游戏_废弃医院篇1.0
  • MySQL 查找指定表名的表的主键
  • javaScript——DOM续(五)
  • Vercel 全面指南:从零部署到高级实践
  • RAG技术完全指南(一):检索增强生成原理与LLM对比分析
  • Java反射机制终极指南:从基础到高级应用
  • 浅谈高校教育改革
  • C语言中数字转化为字符串的方法
  • 计算机视觉——基于树莓派的YOLO11模型优化与实时目标检测、跟踪及计数的实践
  • 网络通信问题及解决方案