Python脚本运行日志案例1

Python自动化刷投票脚本开发,微信投票再也不需要发红包了 前言 现在部分比赛为了推广赞助商或者比赛本身,需要参赛队伍进行网上拉票,甚至票数还会占一定比例的成绩。因此,刷票也就应运而生了。此次我们团队参加一个比赛,就需要网上投票决出前几名,作为一位技术人员,当然是得“解决”技术能解决的问题嘛,所以就写了个刷投票插件来刷一刷。 原理 刷票的原理很简单,就是相当于模拟人登录网站去投票,只是把这个过程程序化,让程序代替人到网站去投票。具体一点说把,首先是客户端(我们)发出请求(Request)给服务端(投票网站),跟他们说,我们需要看他们网站的信息,然后服务端就会回 阅读详情

目的:
每次运行脚本时都会在源目录下生成一个详细的处理日志文件,记录了所有关键信息,同时保持控制台的简洁输出。

案例要求:

  1. 输入信息模块化:将目录输入检查模块化
  2. 优化路径处理,去除不必要的引号处理
  3. 修改日志记录方式,在process_files函数中记录关键信息并保存到源目录
import os
import shutil
import re
from pathlib import Path
import datetime

def get_directory_input(prompt, create_if_not_exists=False):
    """获取目录输入,提供统一的验证逻辑"""
    while True:
        path = input(prompt).strip()
        # 移除用户可能复制路径时带有的引号
        path = path.strip('"\'')
        
        if not path:
            print("错误: 路径不能为空!")
            continue
            
        path_obj = Path(path)
        
        if not path_obj.exists():
            if create_if_not_exists:
                create = input(f"目录 '{path}' 不存在,是否创建? (y/n): ").strip().lower()
                if create in ['y', 'yes']:
                    try:
                        path_obj.mkdir(parents=True, exist_ok=True)
                        print(f"已创建目录: {path}")
                        return path
                    except Exception as e:
                        print(f"创建目录失败: {e}")
                else:
                    print("操作已取消")
                    exit()
            else:
                print(f"错误: 路径 '{path}' 不存在!")
                continue
        elif not path_obj.is_dir():
            print(f"错误: '{path}' 不是目录!")
            continue
            
        return path

def get_user_input():
    """获取用户输入的三个关键参数,提供更友好的交互体验"""
    print("=" * 50)
    print("数据文件处理工具")
    print("=" * 50)
    
    # 获取源目录
    source_dir = get_directory_input("请输入源目录路径 (SOURCE_DIR): ")
    
    # 获取目标目录
    target_dir = get_directory_input("请输入目标目录路径 (TARGET_DIR): ", create_if_not_exists=True)
    
    # 获取日期
    while True:
        date_str = input("请输入日期 (格式: YYYYMMDD, 例如 20241231): ").strip()
        if not re.match(r"^\d{8}$", date_str):
            print("错误: 日期格式不正确!")
            continue
        break
    
    # 确认输入
    print("\n" + "=" * 50)
    print("\n请确认您的输入:")
    print(f"源目录: {source_dir}")
    print(f"目标目录: {target_dir}")
    print(f"日期: {date_str}")
    print("=" * 50)
    confirm = input("\n是否确认以上信息? (y/n): ").strip().lower()
    if confirm not in ['y', 'yes']:
        print("操作已取消")
        exit()
    
    return source_dir, target_dir, date_str

def process_files(source_dir, target_dir, date_str):
    """处理文件的主要逻辑"""
    source_path = Path(source_dir)
    target_path = Path(target_dir)
    
    # 准备日志内容
    log_content = []
    log_content.append("=" * 50)
    log_content.append("文件处理日志")
    log_content.append(f"生成时间: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    log_content.append("=" * 50)
    log_content.append(f"源目录: {source_dir}")
    log_content.append(f"目标目录: {target_dir}")
    log_content.append(f"日期: {date_str}")
    log_content.append("=" * 50)
    
    # 获取文件列表
    file_list = list(source_path.glob("*.txt"))
    planned_count = len(file_list)
    log_content.append(f"计划处理文件数量: {planned_count}")
    
    # 处理文件
    actual_count = 0
    error_messages = []
    
    for file_path in file_list:
        try:
            # 构建新文件名(添加日期前缀)
            new_filename = f"{date_str}_{file_path.name}"
            dest_path = target_path / new_filename
            
            # 复制文件
            shutil.copy2(file_path, dest_path)
            print(f"已处理: {file_path.name} -> {new_filename}")
            actual_count += 1
        except Exception as e:
            error_msg = f"处理文件 {file_path.name} 时出错: {e}"
            print(error_msg)
            error_messages.append(error_msg)
    
    # 记录处理结果
    log_content.append(f"实际处理文件数量: {actual_count}")
    
    if error_messages:
        log_content.append("=" * 50)
        log_content.append("错误信息:")
        for error in error_messages:
            log_content.append(error)
    
    log_content.append("=" * 50)
    log_content.append("处理完成!")
    log_content.append("=" * 50)
    
    # 保存日志到源目录
    log_filename = f"processing_log_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"
    log_path = source_path / log_filename
    
    try:
        with open(log_path, 'w', encoding='utf-8') as log_file:
            log_file.write("\n".join(log_content))
        print(f"\n处理日志已保存到: {log_path}")
    except Exception as e:
        print(f"保存日志文件失败: {e}")
    
    return actual_count

def main():
    """主函数"""
    try:
        # 获取用户输入
        SOURCE_DIR, TARGET_DIR, DATE = get_user_input()
        
        # 执行文件处理
        print("\n开始处理文件...")
        count = process_files(SOURCE_DIR, TARGET_DIR, DATE)
        
        print("\n" + "=" * 50)
        print(f"处理完成! 实际共处理 {count} 个文件。")
        print("=" * 50)
        
    except KeyboardInterrupt:
        print("\n\n操作被用户中断")
    except Exception as e:
        print(f"\n程序执行出错: {e}")

# 使用示例
if __name__ == "__main__":
    main()

解释:

  1. 创建了 get_directory_input() 函数来模块化目录输入验证逻辑
  2. 简化了路径处理,只移除用户可能复制路径时带有的引号
  3. 简化日志记录方式:
    • 在 process_files() 函数中收集所有需要记录的信息
    • 记录输入参数、计划处理文件数量、实际处理文件数量和错误信息
    • 将日志保存为文本文件到源目录
    • 日志文件名包含时间戳以避免覆盖
Python的日志输出 - 记录程序运行轨迹和错误调试 日志输出是指将程序在运行过程中产生的信息记录下来,以便后续分析和排错。在开发工程师的日常工作中,程序的调试、错误定位和性能优化都需要依赖于日志输出。因此,学会如何进行日志输出是非常重要的。本文介绍了Python的日志输出,重点介绍了如何使用logging模块进行日志管理。通过本文的学习,相信大家已经对Python的日志输出有了更加深入的了解,能够更好地应用于自己的开发工作中。 阅读详情

相关推荐

contOS crontab 定时执行python脚本

contOS crontab 定时执行python脚本 安装crontab yum install crontabs crontab语法 常用系统命令 ntsysv //查看系统开机启动项 chkconfig crond on //添加开机自启 service crond start //启动服务 service crond stop //关闭服务 service crond rest...

拉灯的小手的博客 3万+

【Python】Python实现代码运行日志记录并输出文档

Python实现代码运行日志记录并输出文档

ShuaiTester的博客 796

系统启动记录日志例子

启动系统的时候记录日志信息

linux系统脚本执行日志,Shell 脚本实战:日志关键字监控+自动告警

导读该程序使用场景说明:主要用于Linux服务器监控程序日志,如出现关键字异常则触发相应的动作或告警操作,通知到邮件联系人。一、安装邮件服务1、解压tar -jxf mailx-12.4.tar.bz2 -C /usr/src/ && cd /usr/src/mailx-12.4/2、编译make install UCBINSTALL=/usr/bin/install异常报错解决方...

weixin_31041583的博客 703

记录Python脚本的运行日志的方法

主要介绍了记录Python脚本的运行日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3425

Java - 别在 Java 代码里乱打日志了,项目中这样打印日志才足够优雅!

Java - 别在 Java 代码里乱打日志了,项目中这样打印日志才足够优雅!

2393

ROS TF坐标转换实战:从零搭建机器人坐标系(附常见问题排查)

本文提供了一份ROS TF坐标转换的实战指南,详细讲解了如何从零为机器人搭建完整的坐标系,并深入解析了TF的原理。内容涵盖静态与动态坐标变换的发布、URDF模型使用、以及Rviz和rqt_tf_tree等可视化调试工具。文章还附带了常见问题排查表,帮助开发者快速定位并解决TF树断裂、数据错位等典型问题。

weixin_29268385的博客 206

使用 Python 进行日志记录

在本文中,我们将探讨 Python 中日志记录的来龙去脉,从基本概念到高级技术。日志记录是软件开发中必不可少的实践,可帮助开发人员跟踪事件、调试问题和监控应用程序行为。Python 的内置日志记录模块提供了一个灵活而强大的框架,可将日志记录合并到您的应用程序中。

技术探索驿站 749

EDA与机器学习融合:智能优化芯片设计流程的工程实践

机器学习作为数据驱动的核心技术,通过从历史数据中学习复杂模式,实现对系统行为的预测与优化。其原理在于构建模型,将输入特征映射到目标变量,从而揭示数据背后的内在规律。在工程领域,这项技术的核心价值在于能够将专家经验转化为可量化、可复用的智能模型,显著提升自动化水平与决策效率。电子设计自动化(EDA)是芯片设计的关键支撑,传统流程高度依赖人工试错,面临参数空间巨大、优化周期长等挑战。将机器学习应用于EDA,能够构建预测模型来预估设计性能(PPA),或通过代理模型加速设计空间探索,实现智能化的设计辅助与优化。本文

weixin_30411239的博客 685

香橙派5b 移植 imx415

修改设备树,以为例,关闭ov13855,添加imx4151;0;1;0;1;0;1;0;1;0;1;0;1;0;以此类推,修改三个dtsi。

ChenYX的博客 4550

用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台

用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台利用csv库来记录测试结果利用logging库来记录脚本运行信息利用ConfigParser库来读取测试配置信息利用ctypes库将测试信息带颜色打印在控制台总结 利用csv库来记录测试结果 在进行自动化测试时,我们需要记录测试运行结果,将结果存入文件进行自动化测试结果报告; python csv库完全能满足这...

Man_ge的博客 1万+

FPGA工程师面试——FPGA基础知识24题

线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用OC门(集电极开路与非门)来实现,由于不用OC门可能使灌电流过大,而烧坏逻辑门,因此在输出端口应加一个上拉电阻。

FPGA/MATLAB学习教程/源码/项目合作开发 1086

python脚本-记录Python脚本的运行日志的方法

Python中有一个模块logging,可以直接记录日志# 日志级别# CRITICAL 50# ERROR 40# WARNING 30# INFO 20# DEBUG 10logging.basicConfig()函数中的具体参数:filename: 指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;filemode: 文件打开方式,在指定了filen...

weixin_39877898的博客 835

SAP 错误消息调试之七种武器:让所有的错误消息都能被定位

目录 长生剑 - SAPGUI Where Used List 碧玉刀 - ABAP调试器观察点 霸王枪 - ABAP调试器动态断点 多情环 - ABAP代码静态扫描 孔雀翎 - SAT 离别钩 - ST05 拳头 - 迷之方法??? Jerry在2018年开始用中文在微信公众号平台上写作之前,在SAP官方社区上总共写了639篇英文博客。 其中有一篇写于2013年介绍ABAP调试技巧的博客:

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2813

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅰ——理论,实验拓扑和安装基于RemoteAPP的RDS

博客介绍了Windows Server中远程桌面服务的理论,实验拓扑以及基于RemoteAPP的RDS安装。博文介绍了如何在Windows Server上部署发布服务器。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6130

如何通过前端控制台查看模型运行日志信息?

通过操作系统终端实时查看AI模型运行日志,结合Web UI与命令行输出,实现对语音合成等生成式AI服务的可观测性监控。利用启动脚本重定向日志并持续追踪,开发者可在终端直观掌握模型加载、推理耗时与异常信息,兼顾易用性与调试深度。

weixin_36382073的博客 1054

AI辅助决策支持系统架构设计避坑:5个常见技术选型误区及正确方案

AI辅助决策支持系统(AI-DSS)是指通过人工智能技术(机器学习、自然语言处理、知识图谱等)赋能传统决策支持系统,帮助决策者在复杂业务场景中(如供应链优化、风险控制、医疗诊断、金融投资等)提升决策效率和准确性的系统。与传统BI工具不同,AI-DSS不仅能"展示数据",还能基于数据生成"决策建议"甚至"自动执行决策"。技术选型是AI-DSS架构设计的核心环节,涉及数据处理引擎、模型框架、算力资源、集成接口等关键组件的选择。效果不达标:模型预测精度低、决策建议不可用;成本失控:算力资源浪费、维护成本高企。

AIGC应用创新大全的博客 1384

记录Python脚本的运行日志

一、logging模块 Python中有一个模块logging,可以直接记录日志 # 日志级别 # CRITICAL 50 # ERROR 40 # WARNING 30 # INFO 20 # DEBUG 10 logging.basicConfig()函数中的具体参数: filename:   指定的文件名创建FiledHandler,这样日志会被存储在指定的...

博客简介 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Hermes WebUI故障排除技术解析:Python模块导入、运行日志恢复与配额错误处理

Hermes WebUI是一个基于Web的AI助手界面,通过Python后端与Hermes Agent深度集成,提供会话管理、工作区文件操作和工具调用等核心功能。作为开源项目,它面临着复杂的部署环境和多样化的用户场景,其中模块依赖、进程重启恢复和外部API配额管理是三个最常见的技术挑战。本文将从技术实现角度深入分析这些问题的根本原因,并提供基于源码的解决方案和最佳实践。 ## 技术实现-模块导入

gitblog_00581的博客 664

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

python运行日志保存_Python中使用 logging 和 traceback 模块记录日志和跟踪异常

logging模块logging模块用于输出运行日志,可以设置不同的日志等级,保存信息到日志文件中等。 相比print,logging可以设置日志的等级,控制在发布版本中的输出内容,并且可以指定日志的输出格式。1. 使用logging在终端输出日志#!/usr/bin/env Python# -*- coding:utf-8 -*-import logging # 引入logging模块# 设置...

weixin_39583162的博客 715

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python登录日志_记录Python脚本的运行日志的方法

Python中有一个模块logging,可以直接记录日志#日志级别#CRITICAL50#ERROR40#WARNING30#INFO20#DEBUG10logging.basicConfig()函数中的具体参数:filename: 指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;filemode: 文件打开方式,在指定了filen...

weixin_39849548的博客 308

python自动化脚本加入log_记录Python脚本的运行日志的方法

一、logging模块Python中有一个模块logging,可以直接记录日志# 日志级别# CRITICAL 50# ERROR 40# WARNING 30# INFO 20# DEBUG 10logging.basicConfig()函数中的具体参数:filename: 指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;filemode: 文件打开方...

weixin_39623620的博客 989

Python3 【集合】项目实战:3 个新颖的学习案例

3 个新颖的项目学习案例

ROGERLEE- Python场景式编程学习与训练 629

Andriod APP自动安装脚本:Appium+Python

Andriod APP自动安装脚本:Appium+Python 这篇,我们开始来一个实战练习,如何通过appium自动把电脑上一个安卓程序包给安装到一台Andriod手机或者Andriod模拟器中。 一、自动化安装apk包到手机脚本: importos fromappiumimportwebdriver # apk_path=os.path.abspath(os.pat...

yx20130919的博客 643

Linux下Python脚本自启动和定时启动

一、Python开机自动运行 假如Python自启动脚本为auto.py。那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有rc.local请看这篇文章 在exit 0上面编辑启动脚本的命令 /usr/bin/python3 /home/selfcs/auto.py > /home/selfcs/auto.log 最后重启Linux,脚本...

V83109的博客 309
上一篇: Python脚本运行权限问题及解决方案
下一篇: Python GUI设计界面框架应用(一)
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值