脚本工具:PYTHON

news/2025/1/19 21:30:24/

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

这里写目录标题

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

基础知识

安装 Python

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

第一个 Python 脚本

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

python">print("Hello, World!")

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

python hello.py

常用库

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

  1. os 和 sys

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

    • 提供了高级文件操作功能,如复制、移动和删除文件或目录。
    python">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

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

    • 解析命令行参数。
    python">import argparseparser = 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

    • 数据分析和处理的强大工具,特别适用于表格数据。
    python">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 请求并处理响应。
    python">import requestsresponse = requests.get('https://api.github.com/events')
    print(response.status_code)
    print(response.json())
    
  7. smtplib

    • 发送电子邮件。
    python">import smtplib
    from email.mime.text import MIMETextmsg = 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 模块记录程序运行时的信息,便于调试和维护。
    python">import logginglogging.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 结构捕捉和处理异常。
    python">try:x = 1 / 0
    except ZeroDivisionError as e:print(f"Caught an exception: {e}")
    finally:print("This will always execute")
    
  4. 上下文管理器

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

    • 使用列表推导式简化代码,提高可读性和效率。
    python">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

    python">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() 返回的是浮点数,所以在处理整数指数时可能会有精度损失或不必要的浮点数表示。
    python">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
    python"> hexadecimal_string = hex(decimal_number)print(hexadecimal_string)  # 输出: 0xff
    
    • python如果你不想让结果包含 ‘0x’ 前缀,可以使用切片操作去除它:
    python">   hexadecimal_string_no_prefix = hex(decimal_number)[2:]print(hexadecimal_string_no_prefix)  # 输出: ff
    
  9. FFT分析

    python">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) + 10fft_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.ppmy.cn/news/1564503.html

相关文章

flutter在使用gradle时的加速

当我使用了一些过时的插件的时候,遇到了一些问题 比如什么namespace 问题等,因为有些插件库没有更新了,或者最新版本处于测试阶段 于是我就删除这些旧插件(不符合我要求的插件) 于是根据各论坛的解决方法去做了以下的工作 1:项目中删除了这…

解决Element Plus el-date-picker组件清空时,触发两次change的问题

问题 el-date-picker 组件在选择日期范围时会触发两次 change 事件。当用户选择了范围的开始时&#xff0c;会立即触发一次 change 事件。而当用户选择了范围的结束时&#xff0c;又会触发一次 change 事件。 解决方法 1. 延迟更新 <template><div>选择日期--{…

Java 高级工程师面试高频题:JVM+Redis+ 并发 + 算法 + 框架

前言 在过 2 个月即将进入 3 月了&#xff0c;然而面对今年的大环境而言&#xff0c;跳槽成功的难度比往年高了很多&#xff0c;很明显的感受就是&#xff1a;对于今年的 java 开发朋友跳槽面试&#xff0c;无论一面还是二面&#xff0c;都开始考验一个 Java 程序员的技术功底…

Node.js --- 模板引擎EJS

1. 前言 模板引擎是一种工具或库&#xff0c;用于在开发中生成动态内容的 HTML 页面。它通过将预定义的模板与数据结合&#xff0c;生成最终的输出&#xff08;如 HTML 页面、字符串等&#xff09;。模板引擎广泛应用于前端和后端开发&#xff0c;尤其是在构建动态网站时。 2.…

CSS中样式继承+优先级

继承属性和非继承属性 一、定义及分类 1、继承属性是指在父元素上设置了这些属性后&#xff0c;子元素会自动继承这些属性的值&#xff0c;除非子元素显式地设置了不同的值。 常见的继承属性: 字体 font 系列文本text-align text-ident line-height letter-spacing颜色 col…

Ubuntu 开启 SMB 服务,并通过 windows 访问

背景资料 Ubuntu服务器折腾集Ubuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locations Ubuntu开启samba和window共享文件 Ubuntu 配置 SMB 服务 安装 Samba 确保 Samba 已安装。如果未安装&#xff0c;运行以下命令进行安装&#xff1a; sudo apt upda…

面试题解析

1、写一个sed命令&#xff0c;修改/tmp/input.txt文件的内容 要求&#xff1a; 删除所有空行&#xff1b; 在非空行前面加一个"AAA"&#xff0c;在行尾加一个"BBB"&#xff0c;即将内容为11111的一行改为&#xff1a;AAA11111BBB 创造测试文件&#xff1a;…

计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解

关注&#xff1a;CodingTechWork 引言 在计算机网络中&#xff0c;IP地址、子网掩码和网络地址是构建网络通信的基本元素。无论是企业网络架构、互联网连接&#xff0c;还是局域网&#xff08;LAN&#xff09;配置&#xff0c;它们都起着至关重要的作用。理解它们的工作原理&a…