nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

PythonでOutlookからメール送信

本記事について

Pythonを用いたOutlookからメール送信のソースコードになります。

以下のパッケージのインストールが必要になります。 pip install pywin32

mail.BodyFormatの値を切り替えることで、 どの形式でメールを送信するか選択できます。 (テキスト形式、HTML形式、リッチテキスト形式)

import datetime
import pathlib
import win32com.client

def send_mail(FAMILY_NAME : str, full_name : str):
    outlook = win32com.client.Dispatch("Outlook.Application")
    mail = outlook.CreateItem(0)
    # メールフォーマット:1 テキスト, 2 HTML, 3 リッチテキスト
    mail.BodyFormat = 2 # HTML
    mail.to = 'xxxx@exc.epson.co.jp'

    cc_list = ['xxxx@exc.epson.co.jp'
               'xxxx@exc.epson.co.jp',
               'xxxx@exc.epson.co.jp',
    ]

    mail.cc = ';'.join(cc_list)
    mail.bcc = ''
    dt_now = datetime.datetime.now()
    today = dt_now.strftime('%Y/%m/%d')
    mail.subject = '【タイトル】' + ' ' + full_name + ' ' + today
    mail.bodyFormat = 2

    text_file_path = "data\src\message.txt"
    f = open(text_file_path, 'r', encoding='UTF-8')
    text_message = f.read()
    f.close()
    mail.body = text_message.replace(r"{{FAMILY_NAME}}", FAMILY_NAME)

    # 出来上がったメールを確認します。
    mail.Display(True)

FAMILY_NAME = 'FAMILY_NAME'
FIRST_NAME = 'FIRST_NAME'
FULLNAME = FAMILY_NAME + FIRST_NAME

send_mail(FAMILY_NAME, FULLNAME)

Python_Herokuへのデプロイ方法 (LINE通知編)

はじめに

以下のファイルをherokuで使用する場合は、エンコードの選択は必ずUTF-8(BOM無し)を選択してください。

  • ‘Procfile‘
  • ‘requirement.txt‘
  • ‘runtime.txt‘

作成方法

(1) herokuへログインする heroku login

(2) アプリを作成する heroku apps:create line-stock-price

(3) Build Packを追加する

  • heroku buildpacks:add heroku/python -a <アプリ名>
  • heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome -a <アプリ名>
  • heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver -a <アプリ名>

(4) requirements.txtを作成する * pip freeze > requirements.txt

コマンド一覧

  • Gitの初期ファイル作成

    • git init
  • ローカルリポジトリに紐づくリモートリポジトリを設定

    • heroku git:remote -a <アプリ名>
  • 変更したファイルをインデックスに登録

    • git add .
  • コミットを実施する

    • git commit -m "commit_message"
  • リモートリポジトリへのプッシュを実施する

    • git push heroku master
  • gitログ確認

    • git log
  • git status確認

    • git status
  • heroku上でプログラム実行

    • heroku run python main.py

Gitコマンドまとめ

  • ローカルの特定のファイルをを元に戻す
    • git checkout <filename>
  • ローカルの全てのファイルを元に戻す
    • git checkout .
  • ローカルのbranch一覧確認コマンド
    • 'git branch'

以下のサイトが参考になります。

Python】herokuへデプロイしLINE通知する方法│初心者 / https://nkmrdai.com/python-heroku-linenotify/

qiita.com

テストエンジニア技術調査

はじめに

ノンコーディング技術調査をはじめとるするをまとめてみました。

Amazon Honeycode

ノンコーディングでWebアプリを構築できるAmazon Honeycodeなど、AWSが新サービスを紹介

https://it.impress.co.jp/articles/-/20134

ノーコード開発ツールおすすめ13選 プログラミングなしでアプリやWebサイトを作ろう

https://tech-camp.in/note/technology/92173/

テストの未来 テストエンジニアの「これまで」と「これから」を考える

テストの未来 テストエンジニアの「これまで」と「これから」を考える|実績・強み|ソフトウェアテスト・第三者検証のベリサーブ

参考

【ノーコードの衝撃】IT業界が根底から変わる、日本人の知らないノーコードアプリの進化

janomeで形態素解析する

janomeを使用して、形態素解析します

import os
from janome.tokenizer import Tokenizer

tokenizer = Tokenizer()
tokens = tokenizer.tokenize(u'すもももももももものうち')


for token in tokens:
    print(token.surface)
すもも
も
もも
も
もも
の
うち

参考サイト

python で形態素解析。Janome が簡単。pip 一発でインストール | コード7区

Python, Janomeで日本語の形態素解析、分かち書き(単語分割) | note.nkmk.me

VSCodeでAnaconda Prompt環境を構築する [Windows]

はじめに

VSCodeでAnaconda Prompt環境を構築する方法について記載します

Visual Studio Code のターミナルから Anaconda Prompt をオープンする

まずはAnaconda Promptのパスを取得します。Windowsの検索画面から、ファイルの場所を開き、

f:id:nprogram:20200421133222p:plain
Windowsの検索画面からAnaconda Promptの場所を取得する

次に、Anaconda Prompt (Anaconda3)のショートカットのプロパティを開き、リンク先を取得します。

f:id:nprogram:20200421133402p:plain
パスを取得する

Windowsの検索画面から VSCodeからファイル→基本設定→設定を選択して、設定画面を開きます。

Terminal>Integrated>Shell: Windowsの項目のsetttings.jsonを開きます。 以下のような情報が開かれるので、 terminal.integrated.shell.windowsを書き換え、 terminal.integrated.shellArgs.windowsを追加します。ここには、リンク先の第一引数、第二引数、第三引数を設定してください。私の例では以下のようになります。

{
    "window.zoomLevel": 1,
    "explorer.confirmDelete": false,
    "python.terminal.activateEnvInCurrentTerminal": true,
    "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/K"
        , "D:\\Anaconda3\\Scripts\\activate.bat"
        , "D:\\Anaconda3"
    ]
}

VSCodeを再起動後、where pythonコマンドを入力してください。Pythonのパスが表示されれば問題ありません。

(base) C:\Users\user>where python
D:\Anaconda3\python.exe

以下のサイトを参考にしました。 Visual Studio Code のターミナルから Anaconda Prompt を開くようにする (Windows) - Qiita

VS CodeからAnacondaで作成した仮想環境を参照する

以下のリンクに記載があります。

[Windows]「Anaconda」で作った仮想環境を「Visual Studio Code」から参照してみる。 - Qiita

Pythonの正規表現について

Python正規表現

正規表現を使うと文字列を素早く取得できます。

以下のサイトがとても参考になります。

書きながら覚える!Pythonで正規表現を使う方法【初心者向け】 | TechAcademyマガジン

使用例

import os
import re

def can_extract_date_YYYY_MM_DD(s):
    date_pattern = re.compile('^(\d{4})/(\d{1,2})/(\d{1,2})$')
    result = date_pattern.search(s)
    if result:
        y, m, d = result.groups()
        return True
    else:
        return False

print(f'{can_extract_date_YYYY_MM_DD("2000/01/01")}')
print(f'{can_extract_date_YYYY_MM_DD("2000/01/01/01")}')
True
False

Python enum学習

はじめに

Pythonで定数を安全に使いたいなと思い、enumについてまとめました。詳しくは以下をご確認ください

enum --- 列挙型のサポート — Python 3.8.2 ドキュメント

Enum の作成

列挙型は読み書きが容易になるよう class 文を使って作成します。 列挙型は以下のように Enum のサブクラスとして定義します。

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

列挙型の値を取り出す場合はvalueプロパティを使用します

print(Color.RED.value)
print(Color.GREEN.value)
print(Color.BLUE.value)
1
2
3

列挙型のメンバーは人が読める文字列表現を持ちます:

print(Color.RED)
print(Color.GREEN)
print(Color.BLUE)

print(Color.RED.name)
print(Color.GREEN.name)
print(Color.BLUE.name)
Color.RED
Color.GREEN
Color.BLUE
RED
GREEN
BLUE

列挙型は定義順でのイテレーションをサポートしています

for item in Color:
    print(item.value)
1
2
3

辞書型に格納できます

colors_set = {}
colors_set[Color.RED] = 'apples'
colors_set[Color.GREEN] = 'mountain'
colors_set[Color.BLUE] = 'ocean'

for key, value in colors_set.items():
    print(f'{key.name} : {value}')
RED : apples
GREEN : mountain
BLUE : ocean

比較

等価の比較は定義されています:

print(Color.BLUE == Color.RED)
print(Color.BLUE != Color.RED)
print(Color.BLUE == Color.BLUE)

# ただし、非列挙型値との比較は常に不等となります
print(Color.RED == 1)
False
True
True
False