腳本工具: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.pswp.cn/web/66390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66390.shtml
英文地址,請注明出處:http://en.pswp.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 學習指南與實用資料分享&…