Python3関連のことを調べてみた2020年10月12日

Python3関連のことを調べてみた2020年10月12日
目次

レンタルサーバのサブドメインを使って、Webアプリのバックエンド処理をPythonでホスティングする方法

Xserverで独自ドメインに追加したサブドメインを使って、Webアプリのバックエンド処理をPythonでホスティングする方法です。GCPやAWSなどクラウドでホスティングする方法が最近は一般的だと思いますが、今回は費用と性能を鑑みてXserverで行います。

細かい部分については既にこの上ない記事がいくつもあり、記載しても劣化したコピーとなってしまうので割愛しますが、サブドメインでAPIを作るという部分については特になかったのでここでは流れに注力して記載します。自分のメモようなのであしからず。

なお、Xserverの独自ドメインは既にあるものとします。

## 最終的にしたいこと
(私の場合)既にある
https://np-sys.com/
にサブドメインを追加して、
https://APIs.np-sys.com/APIを格納するフォルダ名/Flaskで定義したURLのスラッグ (末尾)
という形でバックエンド処理を走らせるようにする。当然ドメインはお好きなもので。

## 使用するツール
Xserverに自分で入れたPython
PythonのFlaskライブラリ

## 流

元記事を表示

C言語、Pythonによるソケット通信

# C

C言語によるソケット通信のサンプルプログラムです。
ここでは、実験用に、1台のコンピュータでできるように、クライアントからループバックアドレス127.0.0.1に繋ぐようにしています。
あるウェブサイトを参考にしましたが、何処にあるか忘れましたので、言及出来ませんが、
初心者覚書です。

# ソースコード
sserver

“`sserver.c
#include
#include
#include
#include
#include
#include

int main() {
int sockfd;
int client_sockfd;
struct sockaddr_in addr;

socklen_t len = sizeof( struct sockaddr_in );
struct sockaddr_in from_addr;

char buf[1024]

元記事を表示

【Django】modelを使わない画像ファイルアップロード機能を実装する

#はじめに
Djangoアプリで画像ファイルをアップロードする場合ImageFieldを使用してDBに保存するのが定石だと思います。
しかし、先日実務で作ったアプリは他システムとの統合の都合上**DBではなく特定のフォルダにファイルを保存する必要があり**、その方法を調べるのに少し時間がかかったので記事にしておきます。

#結論
**forms.ImageField**を使用して実現可能です。

#サンプル
以下、最小構成のサンプルです。

トップページ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663118/2a73ef48-ab98-7f31-9737-3a8d59df6fa4.png)

適当な画像ファイルを選択して送信すると画面が変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663118/f2f5fe25-8b08-e0f0-0e2e-5c04393453c1.p

元記事を表示

PythonでGoogle Fit APIのデータを取得する

## 概要
Google Fit APIでデータを取得する際、OAuth2を使う必要がある。
OAuth2を使ってデータを取得する際、google-api-python-clientを使用するのが便利である。
google-api-python-clientを使用してデータを取得する方法を以下に記載する。

## 作業手順
1. 自身のスマホでGoogle Fitアプリをインストール
2. Google API Console でGoogle Fit APIを有効にし、jsonファイルをダウンロード。(ファイル名はoauth2.json)
– 詳細にまとめていただいている記事があるので下記を参照
– [GoogleFitのデータをC#で取得してみた!](https://qiita.com/tsumasakky/items/39853ee3680b1ce227e5#apiの有効化)
3. google-api-python-clientを下記コマンドでインストール
`pip3 install google-api-python-client`
4. 下記ソ

元記事を表示

Gitログを整形して、コミットしたファイル名をcsv形式で取得する

### 目的
gitのコミット情報をcsv形式で取得したかったが
git logの–pretty=formatのオプションでは、私が欲しかったフォーマットで取得できなかったため、 一度ログを出力した上でログの整形を行うようにした。

### 環境
OS Mac Catalina
Pycharm CE
python 3.7

### 準備
#### gitログの取得
GitBashなどのコンソールで叩くとログファイルが出力される。
“`git –no-pager log –name-status –no-merges –all \
–date-order –date=format:’%Y/%m/%d %H:%M:%S’ > git.log“`

##### 取り込む想定のgitログ

“` git.log
commit f36da445d06d2db7b4f08a508be835f5464ded
Author: nomori
Date: 2020/10/10 23:50:29
first commit.
A .giti

元記事を表示

【python】二次元系 点図形内外問題

考え方は[こちら](https://qiita.com/ShotaSuzuki-jr/items/9757938c520c9ef067b6)をクリック
#環境
python3.7
#問題
以下のような図の__点P__が図形の中か外かを計算する。
![triangle.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676731/24a7551c-4cd5-8882-16aa-e9edd20de6da.jpeg)

__O(0,0)__は__原点__を表している。また、__A(2,2)__、__B(3,1)__、__C(3,3)__は__図形の頂点__を表している。__P(x,y)__は__任意の点__である。
#計算
下図のように__外積の向きが同じ__になるように計算する。
![triangle3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676731/821e1c

元記事を表示

TensorBoard 2.2.1 at http://localhost:6006/

“`
$ tensorboard –logdir ./results
“`
と打ち、

“`
TensorBoard 2.2.1 at http://localhost:6006/ (Press CTRL+C to quit)
“`

が出力されたが、
`http://localhost:6006/`で__tensorboardが見れない__とき

#

元記事を表示

【Django】QuerySetを辞書型(dict)のlistに変換する

#はじめに
modelから取得したデータをQuerySet→dict要素を持つlistに変換してあれこれしたかったのですが、意外とすぐに情報が出てこなかったので投稿します。

#結論
以下でOKです。

“`python
from .models import Choice

choice_query_set = Choice.objects.all() #QuerySet型で全件取得
choice_list = list(choice_query_set.values())
print(choice_list)
#[{‘id’: 1, ‘question_id’: 1, ‘choice_text’: ‘test1’, ‘votes’: 3}, {‘id’: 2, ‘question_id’: 1, ‘choice_text’: ‘test2’, ‘votes’: 1}, {‘id’: 3, ‘question_id’: 1, ‘choice_text’: ‘test3’, ‘votes’: 2}]
“`

#解説

“`python
from .models import Ch

元記事を表示

numpyでファイルに要素を書き出し確認したい。

#配列の結合などで、思わぬエラーになり、ファイルに要素を書き出して確認したいがデフォルトではfloatなのでうまくいかない。

np.savetxtで、fmt=”%d”を指定して書き出す。

“`
np.savetxt(“a.csv”, target, fmt = “%d”)
“`

元記事を表示

Pytorchで学習済みモデルの一部のレイヤーをtransferしたいときに役立つfunction

Pytorchで学習済みのモデルの一部のレイヤーをfine-tuningやtransfer-learningで使いたいと思ったときに詰まったので備忘録として残します。
といっても、
> [How to load part of pre trained model?
](https://discuss.pytorch.org/t/how-to-load-part-of-pre-trained-model/1113/16)

こちらのディスカッションで出た方法をパクって、functionにしただけです。

#どういうシチュエーションでつかうか
学習済みモデル(.pth)があって、その一部分を含んだ新しいモデルを作りたいときにつかいます。
(僕の場合、Convolutional AutoEncoderのEncoder部分に、学習済みのCNNの重みをロードしたかった)

#コード

“`
def filtered_load_model(model, pretrained_dict):
pretrained_dict = pretrained_dict[‘model’]
mod

元記事を表示

性懲りもなくPythonでLOTO6に挑む

## まえがき

えぇ、もう既に分析され尽くして特にこれと言ってめぼしい結論が出てないことは知ってます。それでもPythonの勉強がてらちょっとやってみようかなと。

## 開発環境

– Python : 3.8.3
– BeautifulSoup : 4.9.2
– resuests : 2.24.0
– Visual Studio Code : 1.49.3

## 過去データ取得

手動コピペなどやってられないのでスクレイピングしてくることにしました。本日(20/10/09)時点の最後のデータは第1524回です。

尚、LOTO6では本数字6コとボーナス数字1コが抽選されますが、今回は本数字のみで勝負します。抽選される数字は1~43で重複することはありません。

“`Python:scloto6.py
import requests
from bs4 import BeautifulSoup

r = requests.get(‘http://hogehoge.com/loto6/data/list1/’)
soup = BeautifulSoup(r.content, “h

元記事を表示

pythonでPDFをfoxit readerを利用してプリンタ指定サイレント爆速印刷しよう!

## 開発環境
os:windows10
言語:python3.7
使うソフト:foxit reader

## foxit readerのインストールについて
窓の社さんから無償版をダウンロードすると楽です。
https://forest.watch.impress.co.jp/library/software/foxitreader/
公式サイトからダウンロードしようとすると無償版(閲覧・印刷のみ)のものでもメールアドレスなどの登録が必要みたいです。

## 自分の中で必要だった印刷要件
・少し複雑な形式の書類も大丈夫。
・印刷スピードが早い(1秒)
・単純な手順であること。

## pythonの印刷方法

win32
直接テキストデータを送って印刷するものしかなかった。
adobe PDF Reader
adobe PDF Readerのコマンドを使って印刷するもの。
下記の記事を参考に作成。
https://qiita.com/hrs_sano645/items/e0fcf5d896b70822e998
当初は

元記事を表示

PyPIへのモジュール公開手法がいろいろ変わっていたのでメモ

PyPIへのモジュール公開手法がしばらく見ない間にだいぶ変わっていたので備忘録としてメモしておきます。

# 何を公開したの?

こちらです。

* [tksugar · PyPI](https://pypi.org/project/tksugar/)

いまのところドキュメントと言えるドキュメントはGitHubだけです

* [TakamiChie/TkSugar: A module that generates a structured Tk window frame from a text file\.](https://github.com/TakamiChie/TkSugar)

# setup.cfg

わたしが昔PyPIを触っていたときは、`setup.py`にいろんな設定を書き込むことで、モジュールの設定を記載していたのですが、今は`setup.cfg`というファイルにモジュールの情報を書き込むようになったようです。

“`config:setup.cfg
[metadata]
name = tksugar
version = attr: tksugar.__vers

元記事を表示

【自動録画】伊藤塾のストリーミングを自動で連続再生する【Selenium】

#はじめに
伊藤塾のストリーミングを外で見たい時にギガを消費するのが嫌なので自分用にバーっと一気に書きました。
寝てる時に録画してます。
1.ストリーミングの動画サイズを小にして下さい
2.Bandicam等の録画ソフトを使って同じ位置で録画し続けて下さい。
(次の動画はjsで初期位置が同じ、サイズが小で再生されます。録画ソフトを固定してひたすら動かしておけばよいです)
__3.コース購入者が自分のために使用して下さい。ストリーミングの視聴権は購入した個人のみです。(当たり前ですが……)__
4.Seleniumの詳しい説明はググって下さい ChromeでF12が使えれば大体使えます。

OS:Windows10
GoogleChrome バージョン: 85.0.4183.121(Official Build) (64 ビット)
Python:3.70
Selenium Webdriver:この記事を書いた時点で最新のもの
chromedriver.exe:この記事を書いた時点で最新のもの

※スクリプトと同じフォルダに’chromedriver.exe’を置いてください。

“`p

元記事を表示

ヨドバシドットコム購入明細メールの商品一覧から商品名と価格を抜き出す

表題の通り、ヨドバシドットコムの購入明細メールから、商品名と価格の組み合わせを取得するプログラムを、Pythonで書いてみました。クリップボード履歴ツールの活用方法と、Pythonのモジュール、PyPerclipとzip関数の利用例にと思ってくれたら幸いです。

説明が要らない という方はこちらをどうぞ

* [ヨドバシドットコム購入明細メールの商品一覧から商品名と価格を抜き出す](https://gist.github.com/TakamiChie/ac0c84727288487198562e87eeb9bec2)

# 動機など
わたしはZaimを使って家計簿を作成しています。レシートを撮影して明細を登録できるほか、Amazonなど一部のサイトでの購入情報を自動的に登録できるため便利です。

しかしこのZaim、残念ながらヨドバシドットコムとの連携には対応していません。このため、ヨドバシドットコムを多用するわたしは買い物履歴を登録するのに毎回苦戦していました。

そこで、ヨドバシドットコムでの商品購入時に届く「ヨドバシ・ドット・コム:ご注文ありがとうございます」のメールに書かれてい

元記事を表示

numpy配列の要素をfloatからintに変換

floatのデータセットから一部の数値をintで切り出したい。

“`php
target = np.array(features[:,7], dtype=int)
“`

元記事を表示

日別訪問者数の最大平均区間(large)

#0.問題
対象となる全日数をDDとし、全日数のうちあるN日間に訪問してくる
人数の平均が最大になる区間の開始日の候補日の数と、それらの候補日の中で
最も早い日をあげなさい。

![0C94A4B5-A272-4603-A43D-1A638670F165.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689780/e34ef4bf-fa3e-c86d-220f-0f4de5b84595.png)

この問題を解くに当たり考えたことをまとめてみた。
下記の手順でクリアできた。

#1.最初に図を書いてみる

与えられのは以下の二行。

“`math
一行目に全日数(DD)と求めたい区間の日数(N)\\
二行目にそれぞれの日数の訪問人数(A_i(i=1,,,DD))
“`

`5 3`
`1 2 3 2 1`

![IMG-2991.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689780/7bffa1cb-

元記事を表示

WSL に postfix を導入して Office365 宛のメールを中継して Python で加工する

## はじめに

調査が必要になったので、送信したメールを中継して加工したうえで Office365 へ転送する方法を試してみました。

WSL → telnet → メール送信 → postfix → Python で加工 → sendmail → Office365 のような感じです。

実現方法の確認程度なので、Windows 10 の WSL (Ubuntu 18.04 LTS) を環境として利用しています。
メールの送信も WSL(localhost)内からとして、postfix の設定も動作確認を優先したものとしています。

## 環境

Windows 10 Pro で WSL (Ubuntu 18.04 LTS) が利用できる環境からスタートしました。

[WSL(Windows Subsystem for Linux)の導入とUbuntuの初期設定](https://qiita.com/kerobot/items/b4f5472d71119506baaa)

* Windows 10 Pro
* WSL (Ubuntu 18.04 LTS)
* Postfix 3.3

元記事を表示

【Python】Seleniumでブラウザ内部の(クライアント)ウィンドウサイズを設定する方法

# やりたいこと

selenium(ブラウザ自動化フレームワーク)で、クライアントウィンドウサイズの設定をしたい。

(タブやURLなどを含めた、「実際の」windowサイズを設定の設定は簡単にできます。ただ、実際のHTMLが表示される「内部の」windowサイズを指定するのが少しだけ面倒です)

# コード

実際のウィンドウサイズと内部のウィンドウサイズの差分をとることで、外枠の大きさを得られます。
あとは設定したいサイズに外枠を足せば、設定するべき実際の画面サイズがわかります。

“`python:pythonで書きます
width = 600 # 設定したい内部の横幅(ClientWidth)
height = 400 # 設定したい内部の縦幅(ClientHeight)
driver = webdriver.Chrome(options=options) # 設定は省略

# 現在のwindowサイズをdriverから抜き出す
current_window_size = driver.get_window_size()

# htmlタグからクライアントのwindowサイ

元記事を表示

Pythonからはじめる数学入門 プログラミングチャレンジ自分的メモ – 問題1-1

## 概要
オライリージャパンの「Pythonからはじめる数学入門」の演習をやってみたメモ。

あくまでも個人的な学習メモです。

## 最初の回答
“`python
def print_num(number):
# print([number + 2 for i in range(2, 11) if number % 2 == 0])
print(‘偶数です’ if number % 2 == 0 else ‘奇数です’)

for item in range(2, 11):
number += 2
print(int(number), end=” “)

if __name__ == ‘__main__’:
number = float(input(‘what your number: ‘))
if number.is_integer():
print_num(number)
else:
print(‘整数を入れてください。’)
“`

## 改良
改良ポイン

元記事を表示

OTHERカテゴリの最新記事