脚本工具:PYTHON

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 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

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

    • 发送电子邮件。
    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 模块记录程序运行时的信息,便于调试和维护。
    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 结构捕捉和处理异常。
    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) + 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.mzph.cn/web/66390.shtml

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

相关文章

左神算法基础提升--4

文章目录 树形dp问题Morris遍历 树形dp问题 求解这个问题需要用到我们在基础班上学到的从节点的左子树和右子树上拿信息的方法。 求最大距离主要分为两种情况:1.当前节点参与最大距离的求解;2.当前节点不参与最大距离的求解; 1.当前节点参与最…

nuiapp在APP中的.nvue页面中使用webview展示空白的问题

在打包的APP中发现webview打开显示空白 最后发现是高度问题 最后给style设置动态高度&#xff1a; <web-view ref"webview" :style"viewStyle" allow :fullscreen"true" :webview-styles"webviewStyles" :src"UrlLink"…

[计算机网络]一. 计算机网络概论第一部分

作者申明&#xff1a;作者所有文章借助了各个渠道的图片视频以及资料&#xff0c;在此致谢。作者所有文章不用于盈利&#xff0c;只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…

神经网络常见操作(卷积)输入输出

卷积 dimd的tensor可以进行torch.nn.Convnd(in_channels,out_channels),其中nd-1,d-2对于torch.nn.Convnd(in_channels,out_channels)&#xff0c;改变的是tensor的倒数n1维的大小 全连接 使用torch.nn.Linear(in_features,out_features,bias)实现YXWT b,其中X 的形状为 (ba…

【C++】如何从源代码编译红色警戒2地图编辑器

【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库&#xff0c;已经包含三方库。 一、运行效果&#xff1a;二、源代码来源及编程语言&#xff1a;三、环境搭建&#xff1a;安装红警2安装VS2022下载代码&#xff0c;源代码其实不太多&#xff0c…

SSM课设-酒店管理系统功能设计

【课设者】SSM课设-酒店管理系统 分为用户端管理员端 技术栈: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用户端主要功能包括&#xff1a; 登录注册 客房预订 客房评论 首页 管理员端主要功能包括&#xff1a; 会员信息管理 客房信息…

Redis 数据存储类型

Redis 支持多种类型的数据存储&#xff0c;每种类型都可以用于不同的场景和需求。下面是 Redis 支持的主要数据存储类型&#xff1a; 1. String&#xff08;字符串&#xff09; 类型简介&#xff1a;字符串是 Redis 中最简单的数据类型&#xff0c;可以包含任何数据&#xff…

游戏引擎学习第80天

Blackboard&#xff1a;增强碰撞循环&#xff0c;循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改&#xff0c;以便实现一些新的功能。具体来说&#xff0c;是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏&#xff0c;目标是构建一些更丰富…

cuda从零开始手搓PB神经网络

cuda实现PB神经网络 基于上一篇的矩阵点乘&#xff0c;实现了矩阵的加减乘除、函数调用等。并且复用之前元编程里面写的梯度下降、Adam、NAdam优化方法。实现PB神经网络如下&#xff1a; #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…

Next.js 实战 (八):使用 Lodash 打包构建产生的“坑”?

前言 最近一直在折腾 Nextjs15 &#xff0c;也在断断续续地写《Next.js15 实战系列》的文章&#xff0c;后来总感觉文章如果没有线上效果预览差点意思&#xff0c;所以就想着先把目前做的项目先部署上线&#xff0c;后续再慢慢添加新功能。 因为之前没有部署过 Nextjs15 工程…

我的世界-与门、或门、非门等基本门电路实现

一、红石比较器 (1) 红石比较器结构 红石比较器有前端单火把、后端双火把以及两个侧端 其中后端和侧端是输入信号,前端是输出信号 (2) 红石比较器的两种模式 比较模式 前端火把未点亮时处于比较模式 侧端>后端 → 0 当任一侧端强度大于后端强度时,输出…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…

打破编程“鄙视链”:探索行业发展新路径

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 打破…

【统计的思想】假设检验(一)

假设检验是统计学里的重要方法&#xff0c;同时也是一种“在理想与现实之间观察求索”的测试活动。假设检验从概率的角度去考察理想与现实之间的关系&#xff0c;籍此来缓解测试可信性问题。 我们先来看一个例子。民航旅客服务系统&#xff0c;简称PSS系统&#xff0c;有一种业…

SpringBoot2 + Flowable(UI)

文章目录 引言I 技术栈软件架构基于 Vue.js 和 Element UI 的后台管理系统工程结构II 依赖rest,logic,conf 的依赖工作流flowable jar包flowable-ui所需jar包III 配置jdbc 配置 nullCatalogMeansCurrent = true引言 I 技术栈 软件架构 前端基于vue 、element-ui框架分模块设…

Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式&#xff0c;写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim &#xff08;因为不支持鼠标&#xff0c;通常 使用键盘上的箭…

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多&#xff0c;这里面有高、中、低档&#xff0c;开发方式也不相同。之所以会这样&#xff0c;有价格的因素&am…

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…

STL容器-- list的模拟实现(附源码)

STL容器-- list的模拟实现&#xff08;附源码&#xff09; List的实现主要时考察我们对list这一容器的理解&#xff0c;和代码的编写能力&#xff0c;通过上节对list容器的使用&#xff0c;我们对list容器已经有了一些基本的了解&#xff0c;接下来就让我们来实现一些list容器常…

Redis 学习指南与资料分享

Redis学习资料 Redis学习资料 Redis学习资料 Redis 作为一款高性能内存数据库&#xff0c;在当今软件开发领域占据着重要地位。其丰富的数据类型、强大的功能特性以及广泛的应用场景&#xff0c;吸引着众多开发者深入学习。以下为你精心整理的 Redis 学习指南与实用资料分享&…