返回文章列表

Python自動化工具安裝與程式設計基礎

本文介紹Python自動化所需工具包的安裝步驟,包含pyttsx3、requests、selenium等必要套件,以及automateboringstuff3、Playwright、pytesseract和openai-whisper的安裝方法。同時涵蓋Python程式設計基礎,如邏輯運算子、條件判斷、迴圈、函式定義與

程式設計 自動化

Python 自動化需要一系列的工具包和基礎程式設計知識。首先,必須安裝必要的工具包,例如 pyttsx3requestsselenium 等,這些套件提供了網頁操作、檔案處理、文字轉語音等功能。接著,可以安裝 automateboringstuff3 工具包,它包含了許多常用的自動化工具,例如 pyautoguipyperclip 等。如果需要進行瀏覽器自動化,則需要安裝 Playwright 工具包,並執行 playwright install 來安裝瀏覽器。針對 OCR 和語音辨識,可以分別安裝 pytesseractopenai-whisper 工具包。在 Windows 環境下安裝 openai-whisper 時,可能需要額外處理相容性問題。

自動化工具包安裝

在進行自動化工作之前,需要安裝適當的工具包。以下是相關工具包的安裝:

必要工具包

  • pyttsx3:版本 2.98
  • requests:版本 2.32.3
  • selenium:版本 4.25.0
  • send2trash:版本 1.8.3
  • xmltodict:版本 0.13.0

automateboringstuff3 工具包

此工具包會安裝以下最新版本的工具包:

  • bext
  • ezgmail
  • ezsheets
  • humre
  • pyautogui
  • pymsgbox
  • pyperclip
  • pyperclipimg
  • yt-dlp

Playwright 工具包

Playwright 工具包需要額外的一步驟來安裝瀏覽器。安裝完 automateboringstuff3 工具包後,執行 playwright install 來安裝 Playwright 使用的瀏覽器。

pytesseract 和 openai-whisper 工具包

由於 pytesseractopenai-whisper 工具包相對較大,且不是所有讀者都需要,因此沒有包含在 automateboringstuff3 工具包中。若需要使用這些工具包,可以單獨安裝。

macOS 和 Linux 安裝

pip install pytesseract==0.3.10

Windows 安裝

在 Windows 上安裝 Whisper 時可能會遇到錯誤。若出現錯誤,可以嘗試以下方法:

pip install pytesseract==0.3.10

注意:在安裝工具包時,請確保您有足夠的許可權和空間。

圖表翻譯:

內容解密:

以上步驟將幫助您安裝必要的工具包,以進行自動化工作。請注意,在安裝工具包時,請確保您有足夠的許可權和空間。此外,若出現錯誤,可以嘗試以上方法來解決。

Python 基礎知識與實踐

安裝 Whisper 套件

為了使用 Whisper 進行語音識別,需要先安裝相關套件。可以使用 pip 安裝 openai-whisper 套件。但是,需要注意的是,Whisper 套件可能需要特定的 NumPy 版本,因此可能需要下載特定版本的 NumPy。

pip install openai-whisper==20231117

安裝 Tesseract 套件

Tesseract 是一個 OCR(光學字元識別)引擎,可以用於識別圖片中的文字。可以使用 pip 安裝 pytesseract 套件。

pip3 install pytesseract

安裝 PyTorch 套件

PyTorch 是一個深度學習框架,可以用於建構和訓練神經網路。可以使用 pip 安裝 torchtorchvisiontorchaudio 套件。

pip install torch torchvision torchaudio

練習題答案

以下是練習題的答案:

第一章

  1. 運算元包括 +-*/,值包括 'hello'-88.85
  2. 字串是 'spam',變數是 spam。字串總是以引號開始和結束。
  3. 本章介紹的三種資料型別是整數、浮點數和字串。
  4. 表示式是值和運算元的組合,所有表示式都會評估為單一值。
  5. 表示式會評估為單一值,而陳述式不會。
  6. bacon 變數被設為 20,而 bacon + 1 表示式不會重新指派 bacon 的值(需要使用指派陳述式:bacon = bacon + 1)。
  7. 兩個表示式都會評估為 'spamspamspam'
  8. 變數名稱不能以數字開始。
  9. int()float()str() 函式會評估為傳入值的整數、浮點數和字串版本。
  10. 表示式會導致錯誤,因為 99 是整數,而只有字串可以使用 + 運算元與其他字串相連。正確的方式是 'I have eaten ' + str(99) + ' burritos.'

第二章

…(待續)

邏輯運算子與條件判斷

在程式設計中,邏輯運算子和條件判斷是非常重要的概念。讓我們來探討一下這些基礎知識。

邏輯運算子

邏輯運算子用於比較布林值(Boolean),並根據特定規則傳回結果。常見的邏輯運算子包括:

  • and:當兩個條件都為真時,傳回真。
  • or:當至少有一個條件為真時,傳回真。
  • not:對一個條件進行否定,若原條件為真,則傳回假,反之亦然。

以下是一些邏輯運算的範例:

  • True and True 傳回 True
  • True and False 傳回 False
  • False and True 傳回 False
  • False and False 傳回 False
  • True or True 傳回 True
  • True or False 傳回 True
  • False or True 傳回 True
  • False or False 傳回 False
  • not True 傳回 False
  • not False 傳回 True

比較運算子

比較運算子用於比較兩個值之間的關係,傳回一個布林值。常見的比較運算子包括:

  • ==(等於):當兩個值相等時,傳回真。
  • !=(不等於):當兩個值不相等時,傳回真。
  • <(小於):當第一個值小於第二個值時,傳回真。
  • >(大於):當第一個值大於第二個值時,傳回真。
  • <=(小於或等於):當第一個值小於或等於第二個值時,傳回真。
  • >=(大於或等於):當第一個值大於或等於第二個值時,傳回真。

條件判斷

條件判斷是指根據某個條件執行不同的程式碼塊。最常見的條件判斷陳述式是 if 陳述式。例如:

if spam > 5:
    print('bacon')
    print('ham')
print('eggs')

在這個範例中,如果 spam 的值大於 5,則執行印出 'bacon''ham' 的程式碼。如果條件不滿足,則跳過這些程式碼,直接執行印出 'eggs' 的程式碼。

圖表翻譯:

內容解密:

在這段程式碼中,我們使用了 if 條件判斷陳述式來控制程式的流程。當 spam 的值大於 5 時,程式會執行印出 'bacon''ham' 的程式碼,否則直接跳過這些程式碼,執行印出 'eggs' 的程式碼。這種控制流程的能力使得程式可以根據不同的情況做出不同的反應。

程式設計基礎

無窮迴圈與程式終止

當程式執行到無窮迴圈時,可能會導致程式無法正常終止。為了終止這樣的程式,可以使用鍵盤快捷鍵 CTRL-C 來強制終止程式的執行。

跳出迴圈與繼續執行

在程式設計中,經常會遇到需要跳出迴圈或繼續執行迴圈的需求。這時可以使用 breakcontinue 兩個陳述式。

  • break 陳述式:當執行到 break 時,程式會立即跳出迴圈,繼續執行迴圈後面的程式碼。
  • continue 陳述式:當執行到 continue 時,程式會立即跳過當前迴圈的剩餘程式碼,回到迴圈的開始處繼續執行。

迴圈範圍

迴圈範圍可以使用 range() 函式來定義。這個函式可以接受一個、兩個或三個引數,分別代表起始值、結束值和步長。

  • range(10):從 0 到 9(不包含 10)。
  • range(0, 10):從 0 到 9(不包含 10),明確指定起始值。
  • range(0, 10, 1):從 0 到 9(不包含 10),步長為 1。

迴圈範例

以下是一個簡單的迴圈範例,印出從 1 到 10 的數字:

for i in range(1, 11):
    print(i)

內容解密:

在這個範例中,我們使用 for 迴圈來遍歷 range(1, 11) 所產生的數字序列。range(1, 11) 會產生一個從 1 到 10 的數字序列(不包含 11)。迴圈變數 i 在每次迴圈中都會被賦予序列中的下一個值,並印出這個值。

條件判斷

在程式設計中,經常需要根據條件來執行不同的程式碼。這時可以使用 ifelifelse 陳述式。

  • if 陳述式:當條件為真時,執行相應的程式碼。
  • elif 陳述式:當前一個條件為假時,檢查下一個條件,如果為真,則執行相應的程式碼。
  • else 陳述式:當所有條件都為假時,執行相應的程式碼。

以下是一個簡單的條件判斷範例:

spam = 1
if spam == 1:
    print('Hello')
elif spam == 2:
    print('Howdy')
else:
    print('Greetings!')

內容解密:

在這個範例中,我們使用 ifelifelse 陳述式來根據 spam 變數的值來印出不同的訊息。如果 spam 等於 1,則印出 “Hello”;如果 spam 等於 2,則印出 “Howdy”;否則,印出 “Greetings!"。

圖表翻譯:

以下是上述程式碼的流程圖:

圖表翻譯:

這個流程圖描述了上述程式碼的執行流程。首先,檢查 spam 是否等於 1,如果為真,則印出 “Hello”;否則,檢查 spam 是否等於 2,如果為真,則印出 “Howdy”;否則,印出 “Greetings!"。

程式設計基礎

什麼是函式?

函式是程式設計中的一個基本概念,允許我們將程式碼組織成可重複使用的單元。函式可以減少程式碼的重複,提高程式的可讀性和可維護性。

函式的定義

在Python中,函式是使用def關鍵字定義的。例如:

def greet(name):
    print("Hello, " + name + "!")

greet("John")  # Output: Hello, John!

在這個例子中,greet是一個函式,它接受一個引數name,並列印預出一個問候訊息。

函式的呼叫

函式可以透過其名稱加上括號來呼叫。例如:

def add(x, y):
    return x + y

result = add(2, 3)
print(result)  # Output: 5

在這個例子中,add是一個函式,它接受兩個引數xy,並傳回他們的和。

函式的範圍

函式有自己的範圍(scope),這意味著在函式內定義的變數只在函式內有效。例如:

def foo():
    x = 10
    print(x)

foo()  # Output: 10
print(x)  # Error: x is not defined

在這個例子中,x是一個在foo函式內定義的變數,它只在foo函式內有效。

函式的傳回值

函式可以傳回一個值,這個值可以被用作表示式的一部分。例如:

def square(x):
    return x ** 2

result = square(4)
print(result)  # Output: 16

在這個例子中,square是一個函式,它接受一個引數x,並傳回它的平方。

內容解密:

上述程式碼示範瞭如何定義和呼叫函式,以及函式的範圍和傳回值。瞭解函式的基本概念是程式設計的基礎。

錯誤處理

Python提供了一種機制來處理錯誤,這種機制稱為try-except。例如:

try:
    x = 5 / 0
except ZeroDivisionError:
    print("Error: cannot divide by zero!")

在這個例子中,try塊中的程式碼可能會產生一個錯誤,如果錯誤發生,則會執行except塊中的程式碼。

圖表翻譯:

這個圖表示範了try-except機制的流程。

斷言

Python提供了一種機制來斷言某個條件是否為真,這種機制稱為assert。例如:

assert x >= 10, "x is less than 10"

在這個例子中,如果x小於10,則會產生一個錯誤。

圖表翻譯:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Python自動化工具安裝與程式設計基礎

package "網頁爬蟲架構" {
    package "請求層" {
        component [HTTP 請求] as http
        component [Session 管理] as session
        component [代理池] as proxy
    }

    package "解析層" {
        component [HTML 解析器] as html
        component [CSS 選擇器] as css
        component [XPath] as xpath
        component [正規表示式] as regex
    }

    package "儲存層" {
        database [資料庫] as db
        component [檔案系統] as file
        component [API 輸出] as api
    }
}

http --> session : 保持連線
session --> proxy : 防封鎖
http --> html : 取得內容
html --> css : 選取元素
html --> xpath : 路徑查詢
css --> db : 儲存資料
xpath --> file : 匯出檔案

note right of proxy
  輪換 IP 位址
  模擬瀏覽器
  控制請求頻率
end note

@enduml

這個圖表示範了assert機制的流程。

使用 Python 的 logging 模組進行除錯和記錄

Python 的 logging 模組提供了一種強大的工具,讓您可以在程式中加入記錄和除錯功能。這些功能可以幫助您瞭解程式的執行流程、找出錯誤以及進行效能最佳化。

啟用 logging 模組

要使用 logging 模組,首先需要匯入它並設定基本組態。以下是基本的設定:

import logging
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s - %(message)s')

這裡,我們設定了 logging 模組的級別為 DEBUG,這意味著所有級別的記錄都會被顯示。格式字串 '%(levelname)s - %(message)s' 指定了記錄的格式,其中 %(levelname)s 代表記錄級別,%(message)s 代表記錄的內容。

記錄級別

logging 模組提供了五個級別的記錄:

  1. DEBUG: 詳細的除錯資訊。
  2. INFO: 一般性的資訊。
  3. WARNING: 潛在的問題或警告。
  4. ERROR: 錯誤發生。
  5. CRITICAL: 臨界錯誤,可能導致程式當機。

您可以使用對應的函式來傳送不同級別的記錄,例如:

logging.debug('This is a debug message.')
logging.info('This is an info message.')
logging.warning('This is a warning message.')
logging.error('This is an error message.')
logging.critical('This is a critical message.')

將記錄寫入檔案

如果您想要將記錄寫入檔案而不是顯示在螢幕上,可以修改基本組態如下:

logging.basicConfig(filename='programLog.txt', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

這裡,我們設定了檔案名稱為 programLog.txt,並增加了 %(asctime)s 到格式字串中,以包含記錄的時間戳。

停用特定級別的記錄

如果您想要停用某些級別的記錄,可以使用 logging.disable() 函式。例如,要停用所有 CRITICAL 級別以下的記錄,可以使用:

logging.disable(logging.CRITICAL)

使用除錯工具

Python 的 IDE(Integrated Development Environment)通常提供了除錯工具,例如 PyCharm、VSCode 等。這些工具允許您設定斷點、單步執行程式、檢查變數等。

  • Step In:進入函式呼叫。
  • Step Over:快速執行函式呼叫,不進入函式內部。
  • Step Out:快速執行剩餘的程式碼直到離開目前函式。
  • Continue:繼續執行程式直到遇到下一個斷點或程式結束。

透過使用 logging 模組和除錯工具,您可以更有效地瞭解和最佳化您的 Python 程式。

從軟體開發實務的角度來看,建構一個完善的自動化開發環境至關重要。本文涵蓋了從基礎套件安裝到進階除錯技巧的完整流程,提供了一個兼顧廣度與深度的實用。分析不同工具包的功能與安裝方式,可以發現,automateboringstuff3 的整合套件簡化了大部分常用工具的安裝流程,但也需要根據專案需求額外安裝 pytesseractopenai-whisper 等特殊套件。此種模組化設計兼顧了便利性與彈性,值得推廣。然而,跨平臺相容性仍是一項挑戰,尤其在 Windows 環境下安裝 openai-whisper 時,潛在的錯誤需要更明確的解決方案。展望未來,隨著自動化技術的普及,預期會有更多整合性更強、跨平臺支援更完善的工具包出現,進一步降低開發門檻。對於 Python 開發者而言,除了掌握工具的應用,更需深入理解 logging 模組和除錯工具的使用,才能有效提升程式碼品質和開發效率。因此,建議開發者優先熟悉 logging 模組的設定與各級別記錄的使用方法,並結合 IDE 的除錯工具,才能在實務開發中快速定位問題、提升程式碼的健壯性。