相比大家都聞いたことがある自動化生産ライン、自動化オフィスなどの用語では、人の介入なしで機械がさまざまなタスクを自動的に完了することができ、作業効率が大幅に向上しました。
プログラミングの世界には、さまざまな自動化スクリプトがあり、さまざまなタスクを実行するために使用されます。
特に Python は自動化スクリプトの作成に非常に適しています。シンプルで理解しやすい構文を持ち、豊富なサードパーティのツールライブラリがあります。
今回は Python を使用していくつかの自動化シナリオを実装し、お仕事に役立てることができるかもしれません。
- ウェブページのニュースを自動で読む
このスクリプトは、ウェブページからテキストを取得し、自動的に音声読み上げを行うことができます。ニュースを聞きたいときに便利です。
コードは 2 つの主要な部分に分かれています。最初に、ウェブスクレイピングによってウェブページのテキストを取得し、次に読み上げツールを使用してテキストを読み上げます。
必要なサードパーティライブラリ:
Beautiful Soup - クラシックな HTML/XML テキストパーサーで、スクレイピングしたウェブページ情報を抽出するために使用されます。
requests - 使いやすくて強力な HTTP ツールで、ウェブページにリクエストを送信してデータを取得するために使用されます。
Pyttsx3 - テキストを音声に変換し、速度、周波数、音声を制御するために使用されます。
import pyttsx3
import requests
from bs4 import BeautifulSoup
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
newVoiceRate = 130 ## 話す速度を減らす
engine.setProperty('rate',newVoiceRate)
engine.setProperty('voice', voices[1].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
text = str(input("記事を貼り付けてください\n"))
res = requests.get(text)
soup = BeautifulSoup(res.text,'html.parser')
articles = []
for i in range(len(soup.select('.p'))):
article = soup.select('.p')[i].getText().strip()
articles.append(article)
text = " ".join(articles)
speak(text)
# engine.save_to_file(text, 'test.mp3') ## 音声をオーディオファイルとして保存する場合
engine.runAndWait()
- スケッチの自動生成
このスクリプトは、カラー画像を鉛筆スケッチに変換することができます。人物や風景に対して非常に効果的です。
また、わずか数行のコードで一括生成できるため、バッチ処理に適しており、非常に迅速です。
必要なサードパーティライブラリ:
Opencv - コンピュータビジョンツールで、多様な画像およびビデオ処理を実現するための Python インタフェースを提供します。
""" Pythonを使用した写真スケッチング """
import cv2
img = cv2.imread("elon.jpg")
## グレースケール画像への変換
gray_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
## グレースケール画像を反転させる
inverted_gray_image = 255-gray_image
## 反転したグレースケール画像のぼかし
blurred_inverted_gray_image = cv2.GaussianBlur(inverted_gray_image, (19,19),0)
## ぼかした画像を反転させる
inverted_blurred_image = 255-blurred_inverted_gray_image
### スケッチの準備
sketck = cv2.divide(gray_image, inverted_blurred_image,scale= 256.0)
cv2.imshow("元の画像",img)
cv2.imshow("鉛筆スケッチ", sketck)
cv2.waitKey(0)
- メールの自動送信
このスクリプトは、メールの一括定時送信を支援することができます。メールの内容や添付ファイルもカスタマイズでき、非常に便利です。
メールクライアントと比較して、Python スクリプトの利点は、メールサービスをスマートに、一括で、高度にカスタマイズして展開できることです。
必要なサードパーティライブラリ:
Email - 電子メールメッセージの管理に使用されます。
Smtlib - SMTP サーバーに電子メールを送信するために使用され、SMTP または ESMTP リスナーを持つインターネット上の任意のコンピュータにメールを送信するための SMTP クライアントセッションオブジェクトを定義します。
Pandas - データ分析およびクリーニングツールとして使用されます。
import smtplib
from email.message import EmailMessage
import pandas as pd
def send_email(remail, rsubject, rcontent):
email = EmailMessage() ## EmailMessageのオブジェクトを作成
email['from'] = 'The Pythoneer Here' ## 送信者
email['to'] = remail ## 送信先
email['subject'] = rsubject ## メールの件名
email.set_content(rcontent) ## メールの内容
with smtplib.SMTP(host='smtp.gmail.com',port=587)as smtp:
smtp.ehlo() ## サーバーオブジェクト
smtp.starttls() ## サーバーとクライアント間でデータを送信するために使用
smtp.login("[email protected]","delta@371") ## GmailのログインIDとパスワード
smtp.send_message(email) ## メールの送信
print("email send to ",remail) ## 送信成功メッセージの表示
if __name__ == '__main__':
df = pd.read_excel('list.xlsx')
length = len(df)+1
for index, item in df.iterrows():
email = item[0]
subject = item[1]
content = item[2]
send_email(email,subject,content)
- データの自動探索
データの探索は、データサイエンスプロジェクトの最初のステップであり、データの基本情報を把握する必要があります。
通常、pandas や matplotlib などのツールを使用してデータを探索しますが、多くのコードを自分で書く必要があります。効率を向上させるためには、Dtale が良い選択肢です。
Dtale の特徴は、1 行のコードで自動分析レポートを生成できることです。Flask バックエンドと React フロントエンドを組み合わせており、Pandas データ構造の表示と分析を簡単に行う方法を提供しています。
Jupyter 上で Dtale を使用することができます。
必要なサードパーティライブラリ:
Dtale - 自動分析レポートの生成
### Seabornライブラリをインポートしていくつかのデータセットを表示
import seaborn as sns
### Seabornライブラリの組み込みデータセットを表示
print(sns.get_dataset_names())
### Titanicデータセットの読み込み
df=sns.load_dataset('titanic')
### ライブラリのインポート
import dtale
#### クイックサマリーの生成
dtale.show(df)
- 自動デスクトップ通知
このスクリプトは、Windows デスクトップ通知を自動的にトリガーし、重要な事項を通知します。たとえば、2 時間働いたので休憩が必要ですなど。
10 分、1 時間など、固定時間で通知を設定することもできます。
必要なサードパーティライブラリ:
win10toast - デスクトップ通知を送信するためのツール
from win10toast import ToastNotifier
import time
toaster = ToastNotifier()
header = input("何を覚えておいてほしいですか\n")
text = input("関連メッセージ\n")
time_min=float(input("何分後に?\n"))
time_min = time_min * 60
print("リマインダーを設定しています..")
time.sleep(2)
print("準備完了!")
time.sleep(time_min)
toaster.show_toast(f"{header}", f"{text}", duration=10, threaded=True)
while toaster.notification_active(): time.sleep(0.005)