脚本工具:PYTHON

news2025/1/23 17:54:17

Python 是一种高级编程语言,以其简洁清晰的语法和强大的功能被广泛应用于各种领域,包括自动化脚本编写、数据分析、机器学习、Web开发等。以下是一些关于使用 Python 编写脚本工具的基本介绍、常用库以及一些实用技巧总结。

这里写目录标题

      • 基础知识
        • 安装 Python
        • 第一个 Python 脚本
      • 常用库
      • 实用技巧

基础知识

安装 Python

首先需要安装 Python 环境。可以从 Python官方网站 下载适合你操作系统的最新版本,并按照提示进行安装。

第一个 Python 脚本

创建一个简单的 Python 脚本文件(如 hello.py),并在其中输入以下内容:

print("Hello, World!")

然后在命令行中运行该脚本:

python hello.py

常用库

Python 拥有丰富的标准库和第三方库,可以帮助你快速实现各种功能。以下是几个常用的库及其应用场景:

  1. os 和 sys

    • 用于与操作系统交互。
    import os
    import sys
    
    # 获取当前工作目录
    print(os.getcwd())
    
    # 列出指定目录下的所有文件
    for file in os.listdir('/path/to/directory'):
        print(file)
    
    # 获取命令行参数
    print(sys.argv)
    
  2. shutil

    • 提供了高级文件操作功能,如复制、移动和删除文件或目录。
    import shutil
    
    # 复制文件
    shutil.copy('source_file.txt', 'destination_file.txt')
    
    # 移动文件
    shutil.move('source_file.txt', 'new_location/source_file.txt')
    
    # 删除目录及其内容
    shutil.rmtree('directory_to_remove')
    
  3. subprocess

    • 用于调用外部命令并获取输出结果。
    import subprocess
    
    # 执行命令并捕获输出
    result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
    print(result.stdout)
    
  4. argparse

    • 解析命令行参数。
    import argparse
    
    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('integers', metavar='N', type=int, nargs='+',
                        help='an integer for the accumulator')
    parser.add_argument('--sum', dest='accumulate', action='store_const',
                        const=sum, default=max,
                        help='sum the integers (default: find the max)')
    
    args = parser.parse_args()
    print(args.accumulate(args.integers))
    
  5. pandas

    • 数据分析和处理的强大工具,特别适用于表格数据。
    import pandas as pd
    
    # 创建 DataFrame
    df = pd.DataFrame({
        'A': ['foo', 'bar', 'baz'],
        'B': [1, 2, 3]
    })
    
    # 查看前几行数据
    print(df.head())
    
    # 进行数据筛选
    filtered_df = df[df['B'] > 1]
    print(filtered_df)
    
  6. requests

    • 发送 HTTP 请求并处理响应。
    import requests
    
    response = requests.get('https://api.github.com/events')
    print(response.status_code)
    print(response.json())
    
  7. smtplib

    • 发送电子邮件。
    import smtplib
    from email.mime.text import MIMEText
    
    msg = MIMEText('This is the body of the email')
    msg['Subject'] = 'Test Email'
    msg['From'] = 'from@example.com'
    msg['To'] = 'to@example.com'
    
    with smtplib.SMTP('smtp.example.com') as server:
        server.login('username', 'password')
        server.send_message(msg)
    

实用技巧

  1. 虚拟环境

    • 使用虚拟环境管理项目的依赖关系,避免不同项目之间的依赖冲突。
    python -m venv myenv
    source myenv/bin/activate  # Linux/MacOS
    myenv\Scripts\activate     # Windows
    
  2. 日志记录

    • 使用 logging 模块记录程序运行时的信息,便于调试和维护。
    import logging
    
    logging.basicConfig(level=logging.DEBUG)
    logger = logging.getLogger(__name__)
    
    logger.debug('Debug message')
    logger.info('Info message')
    logger.warning('Warning message')
    logger.error('Error message')
    logger.critical('Critical message')
    
  3. 异常处理

    • 使用 try-except 结构捕捉和处理异常。
    try:
        x = 1 / 0
    except ZeroDivisionError as e:
        print(f"Caught an exception: {e}")
    finally:
        print("This will always execute")
    
  4. 上下文管理器

    • 使用 with 语句自动管理资源,确保资源正确释放。
    with open('file.txt', 'r') as f:
        content = f.read()
        print(content)
    
  5. 列表推导式

    • 使用列表推导式简化代码,提高可读性和效率。
    numbers = [1, 2, 3, 4, 5]
    squares = [x**2 for x in numbers if x % 2 == 0]
    print(squares)  # 输出: [4, 16]
    
  6. 使用PYTHON 进行CSV文件的数据处理demo

    import numpy as np      #导入numpy库,用于计算
    import pandas as pd    #导入pandas库,用于CSV文件处理
    import matplotlib.pyplot as plt  #导入matplotlib.pyplot库,用于绘图
    from matplotlib.pylab import mpl #导入mpl函数,用于显示中文和负号
    
     
    mpl.rcParams['font.sans-serif'] = ['SimHei']   #显示中文
    mpl.rcParams['axes.unicode_minus']=False       #显示负号
    
    path = 'test.csv'  #csv文件路径
    data = pd.read_csv(path)   #读取 csv文件
    
    Before_result = data['BEFORE']  #导出BEFORE列的数据  BEFORE为第一行数据,也是索引
    After_result  = data['AFTER']  #导出AFTER列的数据
    Delta_result  = data['DELTA']  #导出DELTA列的数据
    
    N = 500
    t = np.arange(N)+1  #得到1:500的数据
    
    plt.figure()
    plt.plot(t,Before_result, 'b.-')  
    plt.title('Before_result')
    plt.show()
    
    plt.figure()
    plt.plot(t,After_result, 'b.-')  
    plt.title('After_result')
    plt.show()
    
    plt.figure()
    plt.plot(t,Delta_result, 'b.-')  
    plt.title('Delta_result')
    plt.show()
    
  7. 计算指数和取整

    • 使用 math.pow() 函数Python 的 math 模块也提供了一个 pow() 函数,它可以用于浮点数的幂运算。需要注意的是,math.pow() 总是返回一个浮点数。
    • 请注意,由于 math.pow() 返回的是浮点数,所以在处理整数指数时可能会有精度损失或不必要的浮点数表示。
    import math
    result = math.pow(2, exponent)
    print(round(1.4))   # 输出: 1
    print(round(1.5))   # 输出: 2
    print(round(1.6))   # 输出: 2
    print(round(1.23, 1))  # 输出: 1.2
    print(round(1.27, 1))  # 输出: 1.3
    
  8. 十六进制转换

    • 函数hex() 是 Python 内置的一个函数,可以直接将整数转换为以 ‘0x’ 开头的小写十六进制字符串。
    • 语法:hex(number)•number:需要转换为十六进制的十进制整数。decimal_number = 255
     hexadecimal_string = hex(decimal_number)
     print(hexadecimal_string)  # 输出: 0xff
    
    • python如果你不想让结果包含 ‘0x’ 前缀,可以使用切片操作去除它:
       hexadecimal_string_no_prefix = hex(decimal_number)[2:]
    	print(hexadecimal_string_no_prefix)  # 输出: ff
    
  9. FFT分析

    import numpy as np   #数值计算库
    from scipy.fftpack import fft   #基于 Numpy 的科学计算库,用于数学、科学、工程学等领域
    import matplotlib.pyplot as plt  #MATLAB类似的绘图API
    from matplotlib.pylab import mpl  #许多NumPy和pyplot模块中常用的函数,方便用户快速进行计算和绘图
    
    mpl.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文
    mpl.rcParams['axes.unicode_minus'] = False  # 显示负号
    
    # 采样点选择1400个,因为设置的信号频率分量最高为600赫兹,根据采样定理知采样频率要大于信号频率2倍,
    # 所以这里设置采样频率为1400赫兹(即一秒内有1400个采样点,一样意思的)
    N = 1400
    x = np.linspace(0, 1, N)
    
    # 设置需要采样的信号,频率分量有0,200,400和600
    y = 7 * np.sin(2 * np.pi * 200 * x) + 5 * np.sin(
        2 * np.pi * 400 * x) + 3 * np.sin(2 * np.pi * 600 * x) + 10
    
    fft_y = fft(y)  # 快速傅里叶变换
    
    x = np.arange(N)  # 频率个数
    half_x = x[range(int(N / 2))]   # 取一半区间
    
    angle_y = np.angle(fft_y)       # 取复数的角度
    
    abs_y = np.abs(fft_y)               # 取复数的绝对值,即复数的模(双边频谱)
    normalization_y = abs_y / (N / 2)   # 归一化处理(双边频谱)
    normalization_y[0] /= 2             # 归一化处理(双边频谱)
    normalization_half_y = normalization_y[range(int(N / 2))]  # 由于对称性,只取一半区间(单边频谱)
    
    
    plt.subplot(231)
    plt.plot(x, y)
    plt.title('原始波形')
    
    plt.subplot(232)
    plt.plot(x, fft_y, 'black')
    plt.title('双边振幅谱(未求振幅绝对值)', fontsize=9, color='black')
    
    plt.subplot(233)
    plt.plot(x, abs_y, 'r')
    plt.title('双边振幅谱(未归一化)', fontsize=9, color='red')
    
    plt.subplot(234)
    plt.plot(x, angle_y, 'violet')
    plt.title('双边相位谱(未归一化)', fontsize=9, color='violet')
    
    plt.subplot(235)
    plt.plot(x, normalization_y, 'g')
    plt.title('双边振幅谱(归一化)', fontsize=9, color='green')
    
    plt.subplot(236)
    plt.plot(half_x, normalization_half_y, 'blue')
    plt.title('单边振幅谱(归一化)', fontsize=9, color='blue')
    
    plt.show()
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构——队列和栈(介绍、类型、Java手搓实现循环队列)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研) 记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结网上借鉴&#xff0…

[Spring] OpenFeign的使用

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

LangChain + llamaFactory + Qwen2-7b-VL 构建本地RAG问答系统

单纯仅靠LLM会产生误导性的 “幻觉”,训练数据会过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。 正是在这样的背景下,检索增强生成技术(Retrieval-Augmented Generati…

SpringCloud Gateway 集成 Sentinel 详解 及实现动态监听Nacos规则配置实时更新流控规则

目录 一、前言二、版本选择和适配2.1、本文使用各组件版本2.2、官方推荐版本 三、部署sentinel-dashboard3.1、下载 sentinel-dashboard jar包3.2、启动 sentinel-dashboard 四、Gateway 集成 Sentinel实现控制台配置流控规则测试4.1、添加Gateway 集成 Sentinel 包4.2、添加 G…

三相电变为家庭220V,市电火线和零线关系,为什么用三相电输送

参考: https://www.zhihu.com/question/30555841/answer/85723024 上面是电力系统的主要组成,发电站发电后升压传输,然后到各大城市再降压使用。 我们看到电塔上都是三根线,那么因为整个过程都是三相电。 为什么用三相电&#xff…

YOLOv8改进,YOLOv8检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等

精确分割拓扑管状结构例如血管和道路,对各个领域至关重要,可确保下游任务的准确性和效率。然而,许多因素使任务变得复杂,包括细小脆弱的局部结构和复杂多变的全局形态。在这项工作中,注意到管状结构的特殊特征,并利用这一知识来引导 DSCNet 在三个阶段同时增强感知:特征…

DNS未响应服务问题的解决(电脑连着网但浏览器访问不了网页)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

鸿蒙Harmony json转对象(1)

案例1 运行代码如下 上图的运行结果如下: 附加1 Json_msg interface 案例2 import {JSON } from kit.ArkTS; export interface commonRes {status: numberreturnJSON: ESObject;time: string } export interface returnRes {uid: stringuserType: number; }Entry Component …

Transformer详解:Attention机制原理

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,本系列文章是作者参加DataWhale2025年1月份学习赛,旨在讲解Transformer模型的理论和实践。😲 本文将详细探讨Attention机制的原理…

SpringBoot为什么要禁止循环依赖?

大家好,我是锋哥。今天分享关于【SpringBoot为什么要禁止循环依赖?】面试题。希望对大家有帮助; SpringBoot为什么要禁止循环依赖? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 禁止循环依赖的原因与 Spring 框架本身的设计…

利用Qt5.15.2编写Android程序时遇到的问题及解决方法

文章目录 背景1.文件读写 背景 目前我用的是Qt5.15.2来编写Qt程序,环境的配置看我这篇文章【Qt5.15.2配置Android开发环境】 项目中的一些配置的截图: 1.文件读写 假如直接用 QFileDialog::getExistingDirectory来获取路径的话,会得到类…

RV1126+FFMPEG推流项目源码

源码在我的gitee上面,感兴趣的可以自行了解 nullhttps://gitee.com/x-lan/rv126-ffmpeg-streaming-projecthttps://gitee.com/x-lan/rv126-ffmpeg-streaming-project

三维扫描赋能文化:蔡司3D扫描仪让木质文化遗产焕发新生-沪敖3D

挪威文化历史博物馆在其修复工作中融入现代3D扫描技术,让数百年的历史焕发新生。 文化历史博物馆的工作 文化历史博物馆是奥斯陆大学的一个院系。凭借其在文化历史管理、研究和传播方面的丰富专业知识,该博物馆被誉为挪威博物馆研究领域的领先机构。馆…

2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?

模型假设仅仅是简单陈述吗?允许AI的使用是否降低了比赛难度?还在依赖机器学习的模型吗?处理题目的方法有哪些?O奖论文的优点在哪里? 本文调研了当年赛题的评委文章和O奖论文,这些问题都会在文章中一一解答…

Text2Sql:开启自然语言与数据库交互新时代(30/30)

一、Text2Sql 简介 在当今数字化时代,数据处理和分析的需求日益增长。对于众多非技术专业人员而言,数据库操作的复杂性常常成为他们获取所需信息的障碍。而 Text2Sql 技术的出现,为这一问题提供了有效的解决方案。 Text2Sql,即文…

初阶5 排序

本章重点 排序的概念常见排序的算法思想和实现排序算法的复杂度以及稳定性分析 1.排序的概念 排序: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性: 假定在待排序的记录序列中&#xff0…

【优选算法】6----查找总价格为目标值的两个商品

这道题相对于前寄到算法题较为容易~ 同样也是使用了双指针的算法哦~ ----------------------------------------begin-------------------------------------- 题目解析: 题目也是很简单地一句话,但是意图还是很明确~ 讲解算法原理: 同样的&…

windows11关闭系统更新详细操作步骤

文章目录 1.打开注册表2.修改注册表内容2.1 新建文件2.2 修改值 3.修改设置 1.打开注册表 winR输入regedit(如下图所示) 2.修改注册表内容 进HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 2.1 新建文件 右侧界面右键即可 2.2 修改值 重命名为如下…

HTML5使用favicon.ico图标

目录 1. 使用favicon.ico图标 1. 使用favicon.ico图标 favicon.ico一般用于作为网站标志,它显示在浏览器的地址栏或者标签上 制作favicon图标 选择一个png转ico的在线网站,这里以https://www.bitbug.net/为例。上传图片,目标尺寸选择48x48&a…

C++打字模拟

改进于 文宇炽筱_潜水 c版的打字效果_c自动打字-CSDN博客https://blog.csdn.net/2401_84159494/article/details/141023898?ops_request_misc%257B%2522request%255Fid%2522%253A%25227f97863ddc9d1b2ae9526f45765b1744%2522%252C%2522scm%2522%253A%252220140713.1301023…