- 1. 【LINE Messaging API】みんなの LINE へプログラムからメッセージを送りたい
- 2. Python初心者が「Python文法詳解」を読んだメモ #3
- 3. 【Python】boto3でS3ファイル操作まとめ
- 4. Discord.py 0.Xのエコーボットを1.Xに移行するだけ
- 5. 1行で複数代入する変数の型ヒントの書き方
- 6. PythonでYahoo!ニュースのタイトルと配信日時を取得する
- 7. 【最小構成】pythonのpillowモジュールを使ってタピオカミルクティーの画像に「100円」の文字を合成する
- 8. matplotlib.pyplotでminor ticksを表示できない
- 9. Pythonの制御構文、関数(Python学習メモ②)
- 10. Python で psd ファイルを処理できるライブラリ psd-toolsについて
- 11. python3でbasemapのインストールに失敗するとき (Mojave)
- 12. 多クラス分類の結果の混同行列の集計、評価指標の計算
- 13. PythonのコンソールをUNKOまみれにする
- 14. IPアドレスをKibana+Elasticsearchでプロットするメモ
- 15. Python初心者が「Python文法詳解」を読んだメモ #2
- 16. Python3.8でscikit-learnなどのライブラリがインストールできない問題
- 17. DjangoアプリケーションをApacheで公開する
- 18. 【中級者への道】Pythonの*args, **kwargsって何?
- 19. [python] スカラーの判定方法
- 20. pygameを用いて簡単な格闘ゲームを自作してみた3
【LINE Messaging API】みんなの LINE へプログラムからメッセージを送りたい
## 概要
– 友達登録したユーザに個別にメッセージを送りたい。
– プログラムからそれを行いたい。![line18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270842/411f0a12-b2e4-78e8-21d1-d9b7c979ab5c.jpeg)
同じような内容のページはすでにネットにある。だけれど自分が持った次のような疑問に、ストレートに応えるページがあってもいいかな、と思い、同じような疑問をもつ誰かに刺さるよう記事をかく。
## もった疑問
– 「LINE プログラムからメッセージ送信」と調べてみたけれど、 LINE Notify とか LINE公式アカウントとか LINE@ とか出てきてようわからん。
– 送信をしたいだけなのに、ネットの記事をみると「さてサーバを用意しよう」と突然サーバが出てきて困惑。ざっくり簡単に回答すると……
– 使うのは、 LINE公式アカウントを取得したあとに利用できる LINE Messaging API。
– 「送信する」のは自分のぱ
Python初心者が「Python文法詳解」を読んだメモ #3
# バックナンバー
– [Python初心者が「Python文法詳解」を読んだメモ #1](https://qiita.com/usayomo/items/7024c619c5f72462cb10)
– [Python初心者が「Python文法詳解」を読んだメモ #2](https://qiita.com/usayomo/items/9c1537678bdde813a273)今日は短めですが、少しずつでもやっていこうと思います。
写経メインでサクッと。“`py:累積代入文
>>> spam = 10
>>> spam += 100
>>> spam
110
>>> spam -= 60
>>> spam
50
>>> spam *= 10
>>> spam
500
>>> spam /= 2
>>> spam
250.0
>>> spam //= 3
>>> spam
83.0
>>> spam %= 10
>>> spam
3.0
>>> spam **=4
>>> spam
81.0# ビット演算
>>> spam = 1024
>>> spam >>= 2
>>>
【Python】boto3でS3ファイル操作まとめ
## ディレクトリ構成
s3で以下のようにファイルが用意されている前提。
“`
line/
└── diagonal/
└── hoge.csv
“`## 同バケット内でファイルをフォルダ間でコピー
`line/diagonal/hoge.csv`を新たに`line`フォルダ下に`straight`フォルダを作成しそこにコピー
“`python
import os
import boto3BUCKET_NAME = ‘your_bucket’ # バケット名
COPY_FROM = ‘line/diagonal’ # コピー元ディレクトリパス
COPY_TO = ‘line/straight’ # コピー先ディレクトリパス]
FILE_NAME = ‘hoge.csv’ # ファイル名s3 = boto3.client(‘s3’)
copy_from_path = os.path.join(COPY_FROM, FILE_NAME)
copy_to_path = os.path.join(COPY_TO, FILE_NAME)s3.co
Discord.py 0.Xのエコーボットを1.Xに移行するだけ
# 経緯
以前Python3.6を利用したDiscordのメッセージをボイスロイドに読ませるために作ったプログラムが、Python3.7にしたら使えなくなったこと。
それとDiscord.pyのバージョンがかなり古かったので更新したかったためです。Python自体久しぶりに使うのでこれからDiscordアプリでも作る時のための勉強用として残しておきます。
# 環境
今回想定している環境は以下の通りです。
・Python 3.7.4
・Discord.py 1.2.4
・Windows10Pythonの環境設定などは他のページとかを参考にしてください。
エディタなどお好きなのをどうぞ# エコーボットを作る
簡単なエコーボットを作りたいと思います。
前回Discord.py 0.xの時に作ったものなので今は使えませんでした。“`EchoBot.py
# Discord.py 0.x
import discord
client = discord.Client()@client.event
async def on_ready():
print(“-“*35
1行で複数代入する変数の型ヒントの書き方
関数の返り値を複数の変数に代入する時に型ヒントの書き方がわからなかったのでメモ.
こうするらしい.
ちなみに1行で複数行代入する構文の名前が不明なのだが, `unpacking a tuple` とかで出てくるっぽい.– [Type hints when unpacking a tuple?](https://stackoverflow.com/questions/52082939/type-hints-when-unpacking-a-tuple)
“`python
from typing import Tupledef foo() -> Tuple[int, float]:
return 1, 1.0a: int
b: float
a, b = foo()“`
PythonでYahoo!ニュースのタイトルと配信日時を取得する
###こんにちは
ふと
“`cd desktop/python
“`をして
“`ls
“`したところ、3分クッキング的にできるスクレイピングがあったので記事にしようと思います。###最初に
「ではこちらが環境設定のできているPCになります〜〜」なんてアシスタントの人が持ってきてくれるわけでもないので環境設定からやりましょう。
ちなみに僕の環境はmacOS Catalina10.15です、不具合だらけで最近よくいろんなアプリが落ちます。
あ、Python3は入ってる前提でお願いします。
今回用意するモジュールは
“`BeautifulSoup“`と“`requests“`です
どちらも入っていない人は“`pip3 install 〇〇“`でインストールしてください。
これでとりあえず材料が揃った感じです。
ここまでで3分経ってそうですね、頑張っていきましょう。###次に
ターミナルを開いて“`cd destkop“`(ここは自分が保存したい場所でいいです)をして保存先を決めましょう。オススメはデスクトップに“`Python“`というファイルを
【最小構成】pythonのpillowモジュールを使ってタピオカミルクティーの画像に「100円」の文字を合成する
#目的
きっかけはLINE Botのリッチメニュー。
これは自分で作ったとあるBotなんですが、画面下部にあるリッチメニューをタップすると、
それに見合った応答が返ってくるようになっています。![MicrosoftTeams-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495652/0ffcb3da-7a63-4cbc-3746-06036e4ddb53.png)
さて、今回のポイントはリッチメニューの部分です。
これ、実はボタンでもなんでもなくタダの画像です(現状LINEの仕組み上は画像で表現するしかないっぽい・・・)。で、これが作りにくいんです。
そんなイイ感じのアプリは残念ながら持っていなかったので、パワポとペイントを使って切り貼りしています。まあそれなりにイイ出来だとは思うんですけど、時間がかかってしまいました。そこで「それ、Pythonでできるんじゃね?」と思って調べていたところ
pillowなるモジュールでできそうなことが判明!
早速ですがやり方を見ていきましょう
matplotlib.pyplotでminor ticksを表示できない
# 前提
初投稿です。
皆様におかれましては日々の実験結果を図にまとめていらっしゃると思います。最終的には論文投稿を目指すことになりますが、その際に図の体裁にかなり気を配ることになり、基本的なグラフ作成のガイドラインを参照しながら頑張ることになると思います。
特に、対数軸を使う時には目盛に気を付ける必要があり、例えば、$10^0$,$10^1$,$10^2$の点には長めの主目盛(major ticks)を描き、$10^0$と$10^1$の間には$2,3,4,,,$の点に副目盛(minor ticks)描く必要があります。
筆者がpython3のmatplotlib.pyplotで図を作る際にminor ticks(副目盛)を表示できないという問題に遭遇しました。本記事では私の取った対処法を記します。#環境
Python 3.7.3
Anaconda 2019.03
Jupyter notebook 5.7.8# 状況
実験データを両対数グラフで表示します。
##問題
今回問題に出くわしたコードです。“`python:jupyter_notebook_cell
im
Pythonの制御構文、関数(Python学習メモ②)
今回は制御構文と関数についての学習メモです。
## if文
ポイント* swhichはない(変わりにif, elif, elseを使用)
“`python
# こんな感じで入力待ちにできる
x = int(input(“整数を入れてください: “))if x < 0: x = 0 print ("負数はゼロとする") elif x == 0: print("ゼロ") elif x == 1: print("ひとつ") else: print("もっと") ``` ## for文 ポイント * あらゆるシーケンス(リストや文字列)のアイテムに対し、そのシーケンス内の順序で反復を×ことができる * 反復中のシーケンスを改変する必要があるときは、コピーを取って反復をかけることが推奨される。これにはスライス表記を使うのが便利。 ```python # 文字列の長さを測る words = ['cat', 'window', 'defenstrate'] for w in words: print(w, len(w)) #
Python で psd ファイルを処理できるライブラリ psd-toolsについて
# Python でPSDファイルを処理できるライブラリ psd-tools
▼公式ドキュメント
https://psd-tools.readthedocs.io/en/latest/## テスト画像
今回はこちらの画像をサンプルとして使用します。![3070374.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69701/a118272d-c836-7635-372b-f729d3fad46b.jpeg)
Designed by Freepik▼ダウンロード先
https://www.freepik.com/free-psd/restaurant-gift-voucher-template_5903685.htm#page=3&position=11▼Photoshop上でみたレイヤー情報
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon
python3でbasemapのインストールに失敗するとき (Mojave)
##うまくいかなかった
python3 に basemap を入れて使いたかったが、公式のやりかたでうまくできなかった人です。下記のような親切な記事通りにやってみたのですが。。。
https://qiita.com/duonys/items/c941bc2818abe5cc1da7コマンドラインでも、jupyterでも
“`
ImportError: No module named ‘mpl_toolkits.basemap’
“`
を吐いて止まりました。##解決編
結論としては、StackOverflow の [この記事](https://stackoverflow.com/questions/42299352/installing-basemap-on-mac-python) の 14番目(Alexander Pavlovさん)のコメントにある
“`
pip3 install https://github.com/matplotlib/basemap/archive/master.zip
“`
を実行することで解決しました。ただし、不要なライブラリも多数入っ
多クラス分類の結果の混同行列の集計、評価指標の計算
多クラス分類で、未知データを入力とした際、各クラスへの分類確率の予測値が算出される。
テストデータを用いた評価の際、混同行列を書く必要があるので、この記事では、その書き方を例を示す。
## データの用意
3つのクラスに対して、5つのデータを分類器に入力した結果を `results`、正解を `y_true` とする。
“`py
results = [
[0.1, 0.2, 0.7],
[0.5, 0.3, 0.3],
[0.2, 0.3, 0.2],
[0.2, 0.7, 0.2],
[0.2, 0.5, 0.2]
]
y_true = [
[0, 0, 1],
[1, 0, 0],
[0, 0, 1],
[0, 0, 1],
[0, 1, 0]
]
“`## 混同行列を出す
利用するものとしては、 `sklearn.metrics.confusion_matrix` を使う。
[sklearn.metrics.confusion_matrix](https://scikit-lea
PythonのコンソールをUNKOまみれにする
[「文科省のPythonはPythonじゃねぇ」](https://qiita.com/nagataaaas/items/ba33c4c4e0df0b5aa0c4)で知ったのですが、Pythonは組み込み関数も上書きできるんですね。
で、調べてみると、“`builtins.()“`で元の組み込み関数も呼び出せると。
ということは、プログラムの先頭あたりにでも“`
import builtins
def print(str):
builtins.print(‘UNKO’)
“`
といれておけば、何をprint()しても
![2019-11-07_010140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/db344bff-5515-43b4-dfb0-88c62809297c.png)
こうなります。
IPアドレスをKibana+Elasticsearchでプロットするメモ
#目的
いろんなサーバを運用しているのですが、どこの国からアクセスされてるかをプロットしたい!
(Elasticsearch + Kibana + Python3で)
でもLogstashは使わない(事情があって使えない)・・・という時のメモ(普通ない)#環境
ubuntu 18.04
Elasticsearch 7.4
Kibana 7.4
※Elasticsearchについてはいろいろ情報があるので、9200ポートで動いてるのが前提で書いてます。
同じくKibanaは5601で動作中#使用するモジュールのインストール
“`
sudo pip3 install python-geohash
sudo pip3 install geoip2
sudo pip3 install elasticsearch
sudo pip3 install pytz
“`#geoip2用のマップをダウンロード
MAXMINDのページから「GeoLite2 City (MAXMIND DB版)」をダウンロード
[MAXMIND](https://dev.maxmind.com/geoi
Python初心者が「Python文法詳解」を読んだメモ #2
# バックナンバー
– [Python初心者が「Python文法詳解」を読んだメモ #1](https://qiita.com/usayomo/items/7024c619c5f72462cb10)# 第3章 式とデータ型
– 論理演算の結果を表す“ bool“ 型も数値型のオブジェクト。
– Pythonのデータはそれぞれ固有の型を持っているが、全て“ object“ 型から派生している。
– どんなオブジェクトであれ“ object“ 型のインスタンスであり、全ての型は、“ type“ という型のオブジェクトである。“`py:オブジェクト属性に関連する組み込み関数
>>> setattr(obj, ‘ham’, 100) # obj.ham = 100 と同じ>>> getattr(obj, ‘ham’, 999) # try:
100 # return obj.ham
# except AttributeError:
Python3.8でscikit-learnなどのライブラリがインストールできない問題
# 概要
以下のサイトよりGUI上から最新のPython3.8をインストールしましたが、
機械学習を行う際に使用する基本的なライブラリ(scikit-learnなど)
をインストールできなかったので、
その解決方法についてお伝えします。結論からいうと、**Python3.7.3を再インストールしたら上手く行きました。**
[Pythonサイト](https://www.python.jp/install/macos/index.html)
# エラー内容
“`
% pip3 install scikit-learn・・・中略
Building wheels for collected packages: scikit-learn
Building wheel for scikit-learn (setup.py) … error
ERROR: Command errored out with exit status 1:
command: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8
DjangoアプリケーションをApacheで公開する
Djangoを用いて開発したアプリケーションをApacheサーバ上で公開したのでその手順をまとめておきます。
###http.confの編集
“`conf:httpd.conf
WSGIScriptAlias / “/path/to/project/project/wsgi.py” process-group=hoge.com
WSGIDaemonProcess hoge.com python-path=”/path/to/project/project”
WSGIProcessGroup hoge.com
“`このように設定することでアプリケーションにアクセスできるようになります。
この時、wsgi.pyまでのディレクトリのアクセス権限に注意しておかないとForbiddenが表示されます。
【中級者への道】Pythonの*args, **kwargsって何?
# まとめへのリンク
https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8
# はじめに
Pythonのコードをよく見ていると
“`python
def f(*args, **kwargs):
pass
“``*印付きのargs`
そして`**印付きのkwargs`というのを見かけます。これは何なのでしょうか??
# そもそも何の略?
args, kwargsはそれぞれ何の略なのでしょうか?
英語で引数を`argument`といい、複数なら当然argumentsです。
Pythonはかなり省略しがちな記法であり– args = argumentsの略 可変長タプル
– kwargs = keyword argumentsの略 キーワード辞書という意味になっています。
# *args
`*args`は、関数で渡された**余ったキーワード指定なし引数**を、一個のタプルで受け取ることの出来る記法です。
例えば、以下のようにたくさん与えられた整数を足して返す関数accumulateを考え
[python] スカラーの判定方法
入力引数がスカラーかどうかを簡単に判定したいとき,matlabだと[isscalar](https://jp.mathworks.com/help/matlab/ref/isscalar.html)という関数があるが,pythonの場合,どうするのがよさそうかわからなかったので調べた。
# バージョン情報
こういった話はバージョン依存性があるので,本記事作成時のバージョンを残しておく。– python 3.7.3
– numpy 1.17.0# 方法1: Numberクラスを継承しているかどうかで判定
– [numbers — 数の抽象基底クラス](https://docs.python.org/ja/3/library/numbers.html)を読むと,こんなことが書かれている。
> class numbers.Number
> 数の階層の根。引数 x が、種類は何であれ、数であるということだけチェックしたい場合、isinstance(x, Number) が使えます。コードにすると,こんな感じ。シンプルでよい。
“`py
import number
pygameを用いて簡単な格闘ゲームを自作してみた3
# 今回の目標
[前回](https://qiita.com/kankitu_man/items/4a19d48a34508a8ed7ed)は自分が操作するキャラを作成、描画し左右の移動とジャンプができるようになりました。そして今回目指すゴールは敵キャラの表示と自分の操作キャラで敵キャラを攻撃しダメージを与えることです。
また、諸事情により前回とソースコードに多少の違いがあります。# 敵キャラの表示と攻撃判定の処理、攻撃が当たった時の判定処理
“`bash:ディレクトリ構造
プロジェクト名/
├ main.py
└ game_parts/
├ __init__.py
├ stage.py
├ fighter.py
├ control.py
├ caluclation_parts.py
“`“`python:fighter.py
import pygameimport mai