Python関連のことを調べてみた2020年09月13日

Python関連のことを調べてみた2020年09月13日

変数への累算代入とオブジェクトへの累算代入の違いを図で理解する

Pythonでは、数値、関数、クラス、メソッド、モジュールなど **すべて** が **オブジェクト**(何らかのクラスのインスタンス)に **変換** されます。
**変数** は **オブジェクトへの参照値** である **オブジェクトid** を **保持** します。どんなオブジェクトでも **代入** できます。違う型のオブジェクトを **再代入** することもできます。
**リスト** は **オブジェクトid** の **配列** です。配列要素毎に違う型のオブジェクトを 代入・再代入 することもできます。

## 変数代入

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/0d12c9d5-d0a5-fc27-8ea3-0335dc3b39dd.png)

“`py
>>> id(1)
15812500000
>>> type(1)

>>> 1 .__class__ # 小数点に解釈されないようにドットの前に空白を入れる

元記事を表示

Python – str型からint型に変換するときの注意

#はじめに
str型からint型に変換することは、簡単に見えて意外とエラーが起きやすいところです。
この記事では、str型からint型に変換するときに注意するべき点と、どう対処すればよいのかをまとめました。

#エラーが発生しない例
“`python:sample.py
data=int(“1”)
print(data)
“`

#エラーが発生する例
“`python:sample.py
data=int(“1.0”)
print(data)
“`

#解決策
“`python:sample.py
data=int(float(“1.0”))
print(data)
“`

とすれば解決できます。

#最後に
初めてエラーが出たときは頑張って検索しましたが、なかなか情報が出てきませんでした。
なので、少しでも情報を増やそうと思い、この記事を書きました。

元記事を表示

初心者がPythonでウェブスクレイピング(1)改良版

この記事は前回記事[初心者がPythonでウェブスクレイピング(1)](https://qiita.com/inoken0926/items/bc18035925549c85727f)のソース改良版です。
bs4メソッドの使い方を変えて、Yahooニュースのヘッドラインニュース抽出時の最後に余計なものが出てしまうのを改善できたので、そのメモです。
 ※環境:MacOS Catalina Python3.7.3

#Pythonでのウェブスクレイピング学習のロードマップ
(1)ローカルでとりあえず目的のブツのスクレイピングに成功する。 ←まだココ
(2)ローカルでスクレイピングした結果をGoogleスプレッドシートに連携する。
(3)ローカルでcron自動実行を行う。
(4)クラウドサーバー上での無料自動実行に挑戦する。(Google Compute Engine)
(5)クラウド上で、サーバーレスでの無料自動実行に挑戦する。(たぶんCloud Functions + Cloud Scheduler)

#サンプルPGM(1)の機能
・r

元記事を表示

Python – pyinstallerの使い方

#はじめに
皆さんは、Pythonで書いたプログラムを、exeファイルにしたいと思ったことはありますか?
今回は、pyinstallerを使ってPythonプログラムをexeファイルにする方法をご紹介します。

#pyinstallerのインストール
ターミナルで、

“`text
pip install pyinstaller
“`

と入力します。
そうすると、インストールが開始されます。

#サンプルソースコード
“`python:sample.py
print(“Hello!”)
name=input(“What’s your name?”)
print(“Nice to meet you “+name+”!”)
“`

今回はこのソースコードを使用します。

#ソースコードのexe化
ターミナルで、

“`text
pyinstaller sample.py
“`

と入力します。
これだと一つのファイルにはなりませんが、

“`text
pyinstaller sample.py –onefile
“`

のようにすれば一つのファイルだけで動くようになりま

元記事を表示

Poetry Django Docker Pycharm で開発環境構築する

# はじめに

pythonを始めて1年経ちますが、Pythonの環境構築はまだ慣れません。
特にパッケージマネージャは数ある言語の中でも最弱のように感じます。
なぜかmacで開発環境を構築しようとするとなぜか OpenSSL がらみのエラーが発生していました。

そんな悩みの解決に開発環境をdocker上に構築する方法をまとめました。

ソースは [Github](https://github.com/va034600/python-dev-on-docker) にあげてあります。

# ディレクトリ構成

“`
├── pyproject.toml
└── docker
└── Dockerfile
└── docker-compose.yml
└── mysite/*
“`

# ファイル
メインどころのファイルのみ記述します。
Djangoが作成したファイルは置いておきます。

“`:pyproject.toml
[tool.poetry]
name = “python-dev-on-docker”
version = “0.1.0”
descript

元記事を表示

GitHubにある Poetry プロジェクトのサンプル

# はじめに

PipenvとPoetryの一番の大きな違いはPipenvはライブラリプロジェクトでは使えないが、Poetryは使えるところではと思い、Poetryを勉強しました。

mainプロジェクトとlibraryプロジェクトの2つのプロジェクトをGithub経由でインストールしてlibraryプロジェクトの関数をmainプロジェクトから実行するサンプルです。

ソースは [mainプロジェクト](https://github.com/va034600/poetry-main)と [libraryプロジェクト](https://github.com/va034600/poetry-lib) にあげてあります。

# ディレクトリ構成

“`:poetry-lib
├── pyproject.toml
└── poetry_lib
└── aaa2.py
“`

“`:poetry-main
├── pyproject.toml
└── main.py
“`

# ファイル
## poetry-lib
“`:pyproject.toml
[tool.poetr

元記事を表示

C++上でPythonのコードを実行する(Boost.Pythonの利用)

# はじめに
Boost.Pythonは、C++を使ってPython用ライブラリを作る際に使われることが多いですが、逆にPythonのコードをC++側から利用するいわゆる”埋め込み”(Embedding)の用途でも使用できます。

PythonのコードをC++から利用する需要はあまり多くないのか、”boost python”等で検索しても逆の用途(PythonからC++のコードを使用する場合)についての記事ばかり引っかかります。
その場合は”embed”(埋め込み)という検索キーワードを含めると、C++にPythonを埋め込む場合の記事がヒットしやすいです。

# 最もシンプルなコード例

“`cpp:main.cpp
#include
namespace py = boost::python;

int main()
{
Py_Initialize(); // 最初に呼んでおく必要あり

try
{
// Pythonで「print(‘Hello World!’)」を実行
py::obje

元記事を表示

django makemigarations createsuperuser

それでは、前回作成したmodelsで最後に記載した

“`python:models.py
def __str__(selef):
return selef.name
“`

この部分ですが、まだ完全に理解できていません。
管理画面で、各レコードを一覧表で表示したときに、
IDがならんでいると分かりにくいので代わりに、社員名を表示してってことだと思います。

“`
def __init__ 
“`

なんかまだチンプンカンプン…

作成しながら学んでいきたいと思っています。

私は、少しの知識の組み合わせでなんとか最後までいこうとするので、
便利機能を知らないものがたくさんあるかもしれないです。

それでは、スタッフモデルのテーブルを作成しようと思います。

“`django:tarminal
python3 manage.py makemigrations
“`

“`django:tarminal
Migrations for ‘staff’:
staff/migrations/0001_initial.py
– Create model Sta

元記事を表示

【Python】LINE BOTに天気予報を答えさせてみた

#はじめに
tenki.jpをスクレイピングして天気予報をlinebotに組み込んでみました。
https://tenki.jp/

*linedeveloperは登録されている前提でお話します!

#環境
windows
python 3.6.4

#先に完成図
![IMG_3332.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705524/f747663e-a469-fc38-cc87-f42358bf693c.jpeg)

#まずはスクレイピング準備

“`
#対象のサイトURL
url = “https://tenki.jp/forecast/6/30/6200/27100/”
#インスタンス作成
res = urllib.request.urlopen(url)
soup = BeautifulSoup(res, ‘html.parser’)
“`
‘html.parser’はスクレイピングに必要なフィルターみたいなもの。

#classごとのスク

元記事を表示

Docker始めました

作ったツール類をコンテナにまとめてしまえばいろいろ便利と耳にしたので、以前から気になっていたDockerを使い始めることにしました。
今回は、pythonのflaskで作ったwebサーバをコンテナ化し、コンテナの起動・停止だけでwebサーバを管理できるようにしてみようと思います。

使用した環境はこちら

“`
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)
$ docker –version
Docker version 19.03.12, build 48a66213fe
“`

※ 余談ですが、CentOS 8でDockerをインストールしようとすると `containerd.io` が無いぞって言われることがあるようです。私の場合は[こちら](https://vexpose.blog/2020/04/02/installation-of-docker-fails-on-centos-8-with-error-package-containerd-io-1-2-10-3-2-el

元記事を表示

Django Rest Authでjwt token generatorをsimplejwtに変えてみた。

# djangorestframework-jwtを使わない理由

理由としては大きく2つがありました。

– 理由1:もうサポートしてない。(2017年が最後のrelease.)
– securityに問題が発生する。(CVE-2018-0114など。)
– 理由2:refresh_tokenとaccess_tokenを同時に得られない。
– これがきっかけ

`Django-simplejwt`は access_tokenとrefresh_tokenを同時得られる。

# djangorestframework-jwt → djangorestframework-simplejwt

まず、djangorestframework-simplejwtからinstallする。

“`bash
pip install djangorestframework-simplejwt
“`

[django-rest-auth](https://django-rest-auth.readthedocs.io/en/latest/installation.html)のdirecto

元記事を表示

Python3 ctypesでWindowsの特殊フォルダを開く関数のコードと学んだこと

Python3でctypesを使ってWindowsの特殊フォルダを開く関数のコードとそれを書く過程で学んだことです。

“`py:フォントフォルダを開く
import os
import ctypes
from ctypes import oledll, wintypes

def getshellfolderpath(csidl: int) -> str:
if not isinstance(csidl, int):
raise TypeError
SHGetFolderPathW = oledll.shell32.SHGetFolderPathW
SHGetFolderPathW.argtypes = [
wintypes.HWND, ctypes.c_int, wintypes.HANDLE,
wintypes.DWORD, wintypes.LPWSTR]
path = ctypes.create_unicode_buffer(wintypes.MAX_PATH)
SHGetFolder

元記事を表示

自動要約API「summpy」を使って、いろんな文章を要約してみた

# summpyとは
リクルートテクノロジーズさんが公開している文章の自動要約APIです。
入力した文章を指定した行数で要約してくれます。

公開されているGitHub
https://github.com/recruit-tech/summpy

今回は、こちらのAPIに色々な文章を投入し、
結果がどうなるかを検証してみました。

# 検証環境
EC2(Amazon Linux release 2)
python2.7

# インストール
pip, summpy, mecab-python3をインストールします

mecab-python3については、バージョン0.996.5を指定しないと、
「no such file or directory: /usr/local/etc/mecabrc」エラーが出てしまうため、バージョン指定しています。

“`
$ sudo easy_install pip
$ sudo pip install summpy
$ sudo pip install mecab-python3==0.996.5
“`

併せて、networkxのバージョンを1

元記事を表示

Pythonで参照という概念が一瞬ゲシュタルト崩壊したので、少し実験した

– あってるかは自信ない
– まじで自信ない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/2d6ce403-2b6d-23cc-96ee-495b9d39a116.png)

元記事を表示

Codeforces Round #668 (Div. 2) バチャ復習(9/7)

#今回の成績

![スクリーンショット 2020-09-07 20.03.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331393/278c327c-bf9b-7806-b5ac-cc308fb8b85f.png)

#今回の感想

今回は悪くない集中力でバチャコンに臨めていたと思います。
しかし、D問題は自分の持ってない知識が問われましたが、**知っておくべき知識であったので反省**しています。
また、バチャコン中に検索していればわかっていた問題でもあるので、時には検索を活用するのも良いかもしれません。

#[A問題](https://codeforces.com/contest/1405/problem/A)

ギャグだった。気づかんかったら発狂する気がします。**変に実験はせずに**$p\_1,p\_2,…,p\_n$のまま考えると良いです。

$p\_1+p\_2,p\_2+p\_3,…,p\_{n-1}+p\_n$なので、逆にすれば$p\_n+p\_{n-1},…,p\_3+

元記事を表示

【Python】Openpyxlで書き込んだ値が指数表示(E)にされた

#発生した問題
Pythonのライブラリopenpyxlで書き込んだ値がEを用いた指数表示の表示形式にされた

“`python:sample_code.py
import openpyxl

wb = openpyxl.open(‘./Book1.xlsx’)
sh = wb[‘Sheet1’]

sh.cell(row=1, column=1).value = 308985489249593041

wb.save(‘./result.xlsx’)
“`
**結果**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705535/d2e008ea-57f4-5023-8024-c7fb3fe5a624.png)
指数関数を取り除いた表示にしても末尾がいくつか0に置き換えられてて困る

#原因
openpyxlでなくExcelの仕様上の問題
>Excel のセルに15桁を超える数字を入力すると、15桁を超える数字はすべて0に変更されます。

[Excel のセルに長い数値を入力する

元記事を表示

xgboostで桜開花予想をしてみる

xgboostで桜開花予想をしてみる
昨年の3月から今年の2月までのデータを利用
Python
初心者
機械学習

#1.目的
AIさくら予想というのがあり、xgboostを使っているという記事があったので、xgboostでさくら開花予想をしてみた。
https://www.businessinsider.jp/post-186528

#2.結論
微妙な結果でした。上記AIさくら予想が優秀なことがわかりました。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341706/7f6be762-8e28-90e4-1241-b4013bd6f9d5.png)
開花時期に影響が大きい要素として、年間平均気温、7月の日照時間、8月の雨量、10月の最低気温とされました。
年間平均気温はわかりますが、7月の日照時間、8月の雨量、10月の最低気温あたりは意外でした。

#3.データソース
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php
上記気象庁のデー

元記事を表示

TrelloAPIをpythonで使う

TrelloAPIをpythonで使う機会があったので、まとめておきます。

## 準備
“`.py
from trello import TrelloClient
import requests

key = ‘***********’
token = ‘***********’
trello = TrelloClient(key, token)
“`
##ボード(名前、ID、URL)を取得

“`.py
boards=trello.list_boards()
for board in boards:
print(board.name)
print(board.id)
print(board.url)
print(“—————“)
“`

## 特定のボードの情報を取得
“`.py
#知りたいボードのIDを以下に代入
BOARD_ID=”***********”

board=trello.get_board(BOARD_ID)
#リスト一覧取得
lists = board.all_lists()
#リスト名、リストID

元記事を表示

xserverにpythonをインストールしてpipを使えるようにする

# 目的
Xserverは管理者権限がないので

– Python2.7.x /usr/bin/python
– Python3.4.x /usr/bin/python3.4
– Python3.6.x /usr/bin/python3.6

が入っているが、パッケージ管理のpipがない&インストールできない

# やったこと
Linuxbrewをインストールしてbrewでpythonを入れる

## Linuxbrewをインストール
適当なディレクトリで

“`
sh -c “$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)”
“`

以降 XXXXX は Xserverでの自アカウントと置き換えてください

“`

==> Select the Homebrew installation directory
– Enter your password to install to /home/linuxbrew/.linuxbrew

Python – pyautoguiによるマウス、キーボード操作

#はじめに
皆さんは、マウスやキーボードを自動で操作できることを知っていますか?
pyautoguiを使えば、簡単にマウスやキーボードを操作することができます。

#pyautoguiの基礎
##moveTo
moveTo関数はマウスのポインターを動かすための関数です。

“`python:sample.py
pyautogui.moveTo(x座標, y座標)
“`

##click
click関数はPCの画面の特定の位置をクリックさせるための関数です。

“`python:sample.py
pyautogui.click(x座標, y座標)
“`

##rightClick
rightClick関数はPCの特定の位置を右クリックさせるための関数です。

“`python:sample.py
pyautogui.rightClick(x座標, y座標)
“`

##position
position関数は現在のマウスの位置を取得するための関数です。

“`python:sample.py
place=pyautogui.position()
print(“x座標”,