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

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

Can’t connect to MySQL server エラーの解消

mac上で、pythonを利用してmysqlにデータを書き込もうとしたところ、下記エラーが発生しました。

“`
mysql.connector.errors.InterfaceError: 2003: Can’t connect to MySQL server on ‘localhost:3306′ (61 Connection refused)
“`

実行したファイルは、下記になります。

“`update_sql_from_csv.py
### インポート
import csv
import mysql.connector

### ファイルオープン
file = open(“bme280_db.csv”, “r”)

### ファイル読み込み
members = csv.reader(file)

### DB接続
cnx = mysql.connector.connect(host=’localhost’, user=’root’, password=”, database=’bme280db’)

### カーソル作成
cursor = cnx.curso

元記事を表示

【AtCoder解説】PythonでABC247のA,B,C,D,E,F問題を制する!

**ABC247**の**A,B,C,D,E,F問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM

元記事を表示

コンテキストマネージャの型ヒント

## 概要
with構文で使われる、任意のコンテキストマネージャは[contextlib.AbstractContextManager](https://docs.python.org/3.10/library/contextlib.html#contextlib.AbstractContextManager)型の変数に代入できる。​**AbstractConrextManagerを継承している必要はない**​。(mypy v0.942で確認)

`AbstractConrextManager`を継承していないのであればエラーになるべきで、次のようなプロトコル型が必要になると思うのだがどうなんだろう?

“`py
T = TypeVar(“T”, covariant=True)

class ContextManager(Protocol[T]):
def __enter__(self) -> T:

def __exit__(
self,
exc_type: Optional[Type[BaseExceptio

元記事を表示

AWS Cloud9でPython基礎

2022/4/6(水)に行われたAPNパートナー限定セミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で学んだPython基礎部分の復習。

# 1.AWS Cloud9セットアップ
Cloud9を起動。適当に名前を付けて他はすべてデフォルト値でCloud9を起動する。

# 2.Python基礎
Pythonの以下トピックについて学ぶ。

– データ型
– 関数
– モジュール
– 引数とパラメータ

## 2-1.データ型
データ型は以下4種。

– 文字列型
– 整数型
– 辞書型
– リスト型

Cloud9の画面下部Terminalでpythonを実行できるので、`python`と打ち込んで対話モードにしておく。
“`
$ python
Python 3.7.10 (default, Jun 3 2021, 00:02:01)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] on linux
Type “help”, “copyright”, “credits” or “license” for more informa

元記事を表示

『Python1年生』で勉強中(その1)

## この記事について
人工知能とかスクレイピングとかいうことばが気になったので、
だらだら調べていたら『Python1年生』(以下、書籍)という初心者向けの本に行き当たったので、その勉強結果や気になったことの記録を残そうかと思います。

書籍の内容自体には(いろいろ権利とかあるでしょうから)なるべく触れません。
バージョン差異などで試してみたら違っていた!というようなところとか、個人的に気になった点を挙げるにとどめようと思います。

また、言語はJavaScriptをかろうじて使える(基本的な構文が分かるくらい)なので、当たり前なことや見当はずれなことも書いてそうですがご容赦ください、という言い訳をしておきます。
その分、なるべく誤解や曖昧な箇所が無いようには気を付けるつもりです。

あと、タイトルに「(その1)」と付けているように、今後も続けていくつもりです。
続かなかったら……
各回の記事の品質は保証できかねますが、誤り等あれば随時直したいと思います。また言い訳しました。
Qiita自体も慣れてないので、変な書き方してたらそれもすみません。直します。

前置きはここまで。我ながら

元記事を表示

【Python】ファイルを読み込む方法

今回はpythonであるテキストファイルを読み込む方法を解説していきます。

# テキストファイル全体を読み込む

“`Python
file = open(‘test.txt’, mode=’r’, encoding=”utf-8″) # mode r:読込み
text = file.read()
print(text) # テキストファイル全体が表示される
file.close()

# ファイルを閉じたか
print(file.closed) # True
“`

# テキストファイルを一行ずつ読み込む
ファイルサイズが大きい場合、全体ではなく行単位の操作が望ましい場合があります。
また、「with」構文を使用すれば、ファイルが使用された後に閉じることが保証されます。

“`Python
with open(‘./test.txt’) as f:
for line in f:
print line
“`

# open関数について
open関数は、ファイルの新規作成や保存、書き込みなどのファイル操作ができます。

open関数は、以下のような形式で使

元記事を表示

Pythonで変数名を文字列として扱う方法

# はじめに
pythonを扱っていて、ログの解析や処理の実行中に変数の中身がどうなってるのか調べたいことありますよね?
デバッガを使うのが一番簡単なのですが、
処理の中で頻繁に値が変わったり作動中のログに変数Aには何の値が今入ってるのか調べるには、実際に変数名と値を出力するのが一番簡単だと思います。

## locals(), globals()を使わない

python 変数名 取得 などで調べるとまず出てくるのが 組み込み関数のlocals(), globals()を用いる方式です。
現在使用してる名前空間(シンボルテーブル?)にアクセスして、変数名と一致するものを探索して取得する方法です。

参考: https://qiita.com/ragnar1904/items/55a21c521858802dc501

“`python
def hoge():
for variable_name, value in locals().items():
print(f”{variable_name} -> {value}”)
“`
現在の全ての変数名、値に対し

元記事を表示

e-StatにあるCSVをPythonを使ってまとめてダウンロードする

 [政府統計の総合窓口e-Stat](https://www.e-stat.go.jp/)に掲載されているCSVを一括でダウンロードしたくなったので、初学者の私がPythonを使ってプログラムを書いてみた。私がやりたい事はAPI使えればOKだったのだが、なぜか私が欲しい所はAPIが使えなかったので、CSVをダンロードすることにした。

# 使用した言語
– Python(3.9.10)

# 使用したモジュールたち
– requests
– bs4(BeautifulSoup)
– pandas
– os

# 今回取得したいCSV
– 平成29年度〜令和2年度 地域保健・健康増進事業報告 > 健康増進編 > 市区町村表 に掲載されているCSV

# ディレクトリ構成(最小)
e-stat
├ csv
├ main.py
*GitHubでも公開しています。 URL:https://github.com/kawhi6key/e-stat_get_csv

# 実際のコード
“`Python:main.py
import requests
from

元記事を表示

pythonで整数のべき乗の計算にmath.powは使わない(pow() or **を使う)

## 結論
べき乗の計算時はpow or ** を使おう

## math.powの仕様

[公式ドキュメント](https://docs.python.org/ja/3/library/math.html)より引用する
> math.pow(x, y)
x の y 乗を返します。例外的な場合については、 C99 標準の付録 ‘F’ に可能な限り従います。特に、 pow(1.0, x) と pow(x, 0.0) は、たとえ x が零や NaN でも、常に 1.0 を返します。もし x と y の両方が有限の値で、 x が負、 y が整数でない場合、 pow(x, y) は未定義で、 ValueError を送出します。
組み込みの ** 演算子と違って、 math.pow() は両方の引数を float 型に変換します。正確な整数の冪乗を計算するには ** もしくは組み込みの pow() 関数を使ってください

math.pow()は両方の引数をfloatに変換して計算するため、正しくない
※math.pow()の返り値はfloatであることから、floatに変換していることがわかり

元記事を表示

Scipyで多変数関数の最小値を求める(逐次二次計画法の利用)

# はじめに
pythonの`scipy`モジュールを使用して多変数関数の最小値を求める方法について紹介します。
`scipy`の公式レファレンスには多くの方法が記載されていますが、今回は特に逐次二次計画法(SLSQP)について取り上げます。

* [scipyの公式レファレンスはこちら](https://docs.scipy.org/doc/scipy-0.18.1/reference/optimize.html)

# 実行環境
OS : Windows10
環境 : Anaconda(エディタ:Jupyter Notebook)
言語 : Python3
使用ライブラリ : scpiy,numpy

# 逐次二次計画法(SLSQP)
`逐次二次計画法 (Sequenitial Least Quadratic Programming)` とは、制約付き非線形計画問題を解く手法の1つです。

最適化したい目的関数に対して、非線形な等式制約条件式と不等式制約条件式が複数ある場合に適用することができます。

詳しい理論については以下のリンクから参照してみてください。
* [株式会社

元記事を表示

超初心者がAtcoder ProblemsのC問題を231回から240回までをpythonで解いてみた

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

231 Counting 2

https://atcoder.jp/contests/abc231/tasks/abc231_c

“`python:practice.py
import bisect

n,q = map(int, input().split())
alist = sorted(list(map(int, input().split())))
for _ in range(q):
x = int(input())
print(n – bisect.bisect_left(alist,x))
“`

この問題はbisectを使うだけで簡単にとけてしまいます。まずbisect_leftを使って、alistの中でxの数字を挿入できる位置のindex番号を取得します(xより小さい数字の数)。次に、xより大きい数字の数を調べ上げるために、全体数nからさっき取得した値を引き出力すればACです

元記事を表示

Python3 DynamoDBにAWS Lambdaからkintoneのレコードを登録する方法

DynamoDBにLambdaからkintoneのレコードを登録する方法のメモです。

# 環境

* Cloud9
* Python3.9
* pykintoneライブラリ

# 環境構築

## Cloud9にPython3.9をインストールする。

・pyenvのインストール
・Python3.9のインストール

## Boto3のインストール
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

・pip install boto3

## pykintoneのインストール
https://github.com/icoxfog417/pykintone

・pip install pykintone

## EBSボリュームサイズ変更
https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/move-environment.html#move-environment-resize

# サンプルコード

“`p

元記事を表示

Python + SQLite3をJSONで運用する

# SQLiteでJSON

要件とかで列が増えたりすると面倒ですよね、特にView表とかあると面倒すぎます。
**「いっそデータベースにJSONそのまま突っ込んじゃえばいいんじゃん?」**
って思ったらSQLite3ってばJSONにそもそも対応しているんですよね。

## とりあえずクラスを用意。

ざっくりでっち上げました。
以前にポストしたDBを簡単に使う~の焼き直しみたいなものです。
以前のは普通のTableへ更新するためにdictから変換をしていましたが今回のはそのまま突っ込んでます。

**database.py**

“`python
import sqlite3
import json

class DB:
def __init__(self, filePath=None):
if filePath != None:
self.filePath = filePath

def open(self, filePath=None):
if filePath != None:

元記事を表示

Python3でThreadをキャンセル(中断)できるようにする

# 前提
threading.Threadのバックエンドとしてpthreadが用いられている環境,要はPOSIX環境で動くCPythonを前提にしています。
JythonとかWindows上のCPythonとかは本記事の対象外です。

何をやってるのかわからない方は,わからないまま本記事のコードを利用するより,別の方法を探したほうがいいです。

# 実装
“`python
import threading
import ctypes
import errno

class CancelabelThread(threading.Thread):
def cancel(self,timeout=0.00001):
# thread IDを取得
tid=self.ident

# スレッドが未開始または終了済の場合は何もしない
if((tid is None) or (not self.is_alive())):
return False

# libpthread.soをロード(1.)
libpthread=ctyp

元記事を表示

S3バケットに外部からファイルのやり取りを行う(期限付きURL)

### AWS外部から特定のS3バケットにあるファイルをダウンロード&アップロードを行いたい

S3の期限付きURLをLambdaにて生成し、URLにアクセスしファイルのダウンロード&アップロードを行う

(補足)
手動でやる場合は、Lambdaを使わずとも、S3バケットにて2クリック程で期限付きURLの作成ができます。
今回は、URLの生成を(ファイル検知などで)自動化したかっため、Lambdaにて作成しました。

(やった手順)
① S3バケットの作成
② Lambdaの作成
③ Lambda(実行ロール)の設定
④ Lambda実行&ダウンロード&アップロード確認

### ①S3バケットの作成
説明省略。普通に作るだけ。

### ②Lambdaの作成
(URLをメールで連携したかったので…その処理も含まれています。)
(必要に応じて削除してください)

詰まった点:generate_presigned_urlでURL生成しても、S3ファイルのパスにリージョンが含まれなかった。
・import from 設定
・boto3.client(‘s3’, config=Config(

元記事を表示

Python Socket通信

# 概要
pythonで Socket通信に関して学んだので、その実際にSocket通信(TCP)するPG作ってみました。

# 前提
* Python 3.9.7

# 目次

Ⅰ. Socket Server
Ⅱ. Socket Client

## Ⅰ.Socket Server

元々、socket自体は入っているので、インストール不要。なので、そのまま、importを行う。

“`
import socket
“`

まず、Serverを作成していきます。

“`
import socket

# with構文使用することで、close不要になるため使用します。
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((socket.gethostname(), 50000)) # IPとポート指定
s.listen(10) # サーバなので、Listen状態にします。10は、キューに貯める数。

# 何度もレスポンスを返せる

元記事を表示

pypyはC言語並に早かった(素数編) cython-annotationの例有

Pythonが大好きなのですが、処理が遅くて頭を悩ませています。

どうにか早くならないかとpypyとcython(pure python mode)でやってみました。

…すみません、ソースコードはこちらの方のを使わせていただきました。
https://qiita.com/L_A_P_119611/items/40f6c71c136fbe3cf32a

## 環境
MacOS: catalina
CPU: i9
– それぞれ3回計測した結果を載せています。

## pythonの結果
python3.9での実行結果は下記通りでした。
(arrangeをnumpyのに変えたら早くなるのだろうか…)
python3 src_sosu1.py 123456789
123456789 = 3 * 3 * 3607 * 3803
所要時間は39.019531秒です
所要時間は34.007243秒です
所要時間は35.707815秒です

## javaの結果
java Factrization 123456789
123456789 = 3803 * 3607 * 3 * 3
所要

元記事を表示

ローカルPC環境にMinicondaとPHi-C仮想環境を構築

Hi-Cデータから動的ゲノム状態を理解するための「[PHi-C](https://github.com/soyashinkai/PHi-C2)」を実行するための計算環境構築を説明します。
すでにPython環境を利用している人は[PHi-C仮想環境を構築](https://qiita.com/soyashinkai/items/49cefc917eb2b1a7c44c#phi-c%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89)から始めてください。
AnacondaによるPython環境の導入は規約上有償の場合もあるので、ここではMinicondaでの構築を説明します。

# MinicondaでPython環境を導入

### Minicondaのダウンロード
以下のMiniconda公式サイトから、使用OSに対応したインストーラーをクリックして、ローカルPCの適当なフォルダに保存する。
https://docs.conda.io/en/latest/miniconda.html

### Minicon

元記事を表示

【Python】Pythonの型名が覚えられなかったのでメモ

Java, Rubyの実務経験があり、Pythonも覚えてみたいと考えた今日このごろ。
型の種類と名前が全く一致しなかった戒め。

下記のフォーマットで自分用にメモ
###### 大枠のジャンル
“`
・Pythonでの呼び方
 ・Java, Ruby(他覚えやすかったキーワードなど)での呼び方

※あれば感想など
“`

###### 数値
“`
・int
 ・整数

・float
 ・小数点

※散々やってきたので大丈夫。小数点の計算 ^ Javaのときは「BigDicimal」を使わないとダメだぞ!と怒られた記憶がある
“`

###### 論理
“`
・bool(Yes / No)
 ・boolean
“`

###### 文字列
“`
・str
 ・String

※大した違いじゃないからまぁいいんだけど、こういう微妙な違いがあると困るよね。
“`

###### シーケンス
“`
・list
 ・ArrayList(Java)(後から追加できるからArrayListで覚える)

・tuple
 ・list(配列)(後から変更できないからlistで覚える)

元記事を表示

Python3: Google Cloud Functions で加算

フォルダー構造

“`text
$ tree
.
├── main.py
└── requirements.txt
“`

“`py:main.py
def sum_up(request):
request_json = request.get_json()
aa = 0
bb = 0
#
if ‘aa’ in request_json:
aa = int(request_json[‘aa’])

if ‘aa’ in request_json:
bb = int(request_json[‘bb’])
#
sum = aa + bb
rvalue = {}
rvalue[‘sum’] = sum
rvalue[‘aa’] = aa
rvalue[‘bb’] = bb

return rvalue
“`

“`text:requirements.txt
# Function dependencies, for example:
# package>=version
“`

## ローカルでテスト ##

サーバーの起動

“`bash
f

元記事を表示

OTHERカテゴリの最新記事