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

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

boto3を使って、さくらのオブジェクトストレージにファイルをアップしてみる

# はじめに
最近になって、さくらのクラウドを触り始めた初心者(筆者)が四苦八苦しながら
オブジェクトストレージにファイルをアップロードしてみたのが前回の内容。

https://qiita.com/nkmr_RL/items/9b15c2eaddb97a830887

上記のアップロードができるようになったら
**「なんかPythonから操作できる気がしてきたわ…」**
と思い立ったので、Pythonから操作してみるのが今回の内容。

あと、先に言っておきますが、**AWS公式ライブラリboto3を使った方法**になるので
**さくらインターネットの公式サポート対象外のやり方**です。(多分)

だから、1年後には使えなくなっているかもしれない。(バナージ…悲しいね)

# 予想される検索ワード
以下、この記事を求めているであろう方が入力しそうな
(というか実際に私が必死で検索した)検索ワードです。

さくらのクラウド, オブジェクトストレージ, アップロード方法, Python, boto3

# 実行環境
– ubuntu 18.04(Dockerで構築)
– Pytho

元記事を表示

データフレームのある列をインデックスに設定する df.set_index()

ある列をインデックスに設定したい!
そんな時に、用いるのが`set_index()`です
df = df.set_index(“インデックスに設定したいカラム名”)

例えば、3列目くらいに`age`というカラムがあったとします。
年齢ごとにデータをまとめたいとき、一番左の列(インデックス列)にあればとてもデータとして
見やすいですよね。
是非使ってみてください!

元記事を表示

FastAPI: SQLAlchemy で MariaDB を使う (その 3)

こちらのプログラムを改造しました。
[FastAPI: SQLAlchemy で MariaDB を使う (その 2)](https://qiita.com/ekzemplaro/items/e4a89757858c4c85e271)

## プログラム ##
フォルダー構造は同じです。

“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`

“`py:crud.py
from sqlalchemy.orm import Session

from . import models, schemas
#
def get_city(db: Session, city_id: str):
return db.query(models.City).filter(models.City.id == city_id).first()
#
def get_cities(db: Session, skip: int = 0, limit:

元記事を表示

FastAPI: SQLAlchemy で MariaDB を使う (その 2)

こちらのプログラムを改造しました。
[FastAPI: SQLAlchemy で MariaDB を使う](https://qiita.com/ekzemplaro/items/9f84596fba2c532d45a9)
変更点
 id を string に
 age を追加

## プログラム ##

フォルダー構造は同じです。

“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`

“`py:crud.py
from sqlalchemy.orm import Session

from . import models, schemas

def get_user(db: Session, user_id: str):
return db.query(models.User).filter(models.User.id == user_id).first()

def get_user_by_email(db: S

元記事を表示

超初心者が適当に選んだC問題を解きまくってみた【Python】

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

116 Grand Garden

https://atcoder.jp/contests/abc116/tasks/abc116_c

“`python:practice.py
def judge(hlist):
if len(hlist)==0:
return 0
mini = min(hlist)
idx = hlist.index(mini)
hlist = [h-mini for h in hlist]
return mini + judge(hlist[:idx]) + judge(hlist[idx+1:])

n = int(input())
hlist = list(map(int, input().split()))
print(judge(hlist))
“`

この問題で必要な考え方は、最初に一番背の低い花の必要な数だけ全体に水を与えて

元記事を表示

【AtCoder参加記】PythonでABC249のA, B, C, Dを解く

自分がコンテストでやった考察と実装を書いてみます.

* [A問題 『Jogging』](https://qiita.com/yassu/items/95f53238774e0d34489b#a%E5%95%8F%E9%A1%8C-jogging)
* [B問題 『Perfect String』](https://qiita.com/yassu/items/95f53238774e0d34489b#b%E5%95%8F%E9%A1%8C-perfect-string)
* [C問題 『Just K』](https://qiita.com/yassu/items/95f53238774e0d34489b#c%E5%95%8F%E9%A1%8C-just-k)
* [D問題 『Index Trio』](https://qiita.com/yassu/items/95f53238774e0d34489b#d%E5%95%8F%E9%A1%8C-index-trio)

## A問題 『Jogging』

問題ページ: [A – Jogging](https://atcoder.jp/cont

元記事を表示

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

**ABC249**の**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

元記事を表示

Pillowで図形を描く

# インストール
“`
$ pip install Pillow
“`

# 使い方
## 1. インポート
“`python
from PIL import Image
“`

## 2. 画像ファイルを開く
### 画像ファイルを読み込み
“`python
im = Image.open(fp, mode=’r’, formats=None)
“`
* __fp__ – ファイルのパス

### 新しく生成
“`python
im = Image.new(mode, size, color=0)
“`
* __mode__ – モードを選択
* __size__ – タプル`(width, height)`をピクセルで指定
* __color__ – 画像の色 デフォルトでは`’black’`

## 3. 図形を描く
### インポートとdrawオブジェクトの生成
“`python
import ImageDraw
draw = ImageDraw.Draw(im, mode=None)
“`

### 直線,折れ線
“`python
draw.l

元記事を表示

FastAPI: SQLAlchemy で MariaDB を使う

次のページを参考にしました。
[SQL (Relational) Databases](https://fastapi.tiangolo.com/ja/tutorial/sql-databases/)

Ubuntu でのライブラリーのインストール

“`bash
sudo pip3 instal mysqlclient
“`

MariaDB に次のデータベースを作成します。

“`text
host =’localhost’
data_base = ‘db_test’
user =’scott’
password = ‘tiger123’
“`

## プログラム ##

“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`

“`py:crud.py
from sqlalchemy.orm import Session

from . import models, schemas

def get_user(db

元記事を表示

【Python + OpenCV】簡易寸法測定(画像に寸法描写)

## はじめに
画像を用いた寸法測定ツール作成は、カメラからの遠近によるサイズミスマッチや精度の問題があって敬遠しておりました。

https://qiita.com/okm_6880/items/0f964484d570208d715d

しかし先日、面白そうな記事を見つけました。

https://protopedia.net/prototype/2928

https://github.com/esc122/opencv_draw_binarize

## ちょっとした改良
2か月前に 1 commitされているのみで、開発が進んでいるのか止まっているのかわかりません。ひとまずfork / git clone し自分でも使ってみて、必要に思った機能を追加しました。詳しい操作方法などはREADME.mdをご覧ください。二値化して面積求めたりする機能もあるようですが、私には必要なさそうなので説明を省略しています(元リポジトリには一切の説明がありません)。

https://github.com/youichi-io/opencv_draw_binarize

#### メイン画面
w

元記事を表示

【Python OpenCV】画像 から 横線 のみ検出する(おまけで縦線も)

## はじめに
OCRするうえで「枠線」は避けて通れません。文書のOCRを進めていると、表の枠線が検出の邪魔をすることがあります。一方で、OCRをする領域を絞り込むために枠線の位置情報を必要とすることもあります。今回は、そんな枠線の情報を取得することを目指します。

![out_64.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/789ea6a2-2b70-276a-bb37-85950aa019a7.jpeg)
![out_ver.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/ecbb6c87-5f9d-3f65-cd11-4696f6954a57.jpeg)

## 対象者
この記事は下記のような人を対象にしています。
– OCRのために枠線の情報を取得したい人

## 参考元
参考にしたサイト様を以下に示します。書かれている通り、微調整が重要でした。この記事ではその微調整した部分をまとめ

元記事を表示

にゃんこスイーパー

Python+Cursesで、にゃんこスイーパーを書いてみました。
Ubuntuのターミナルで動きます。
ファイルに、chmod +x nyankosweeper.pyとして、実行権を付けて動かして下さい。

$./nyankosweeper.py [number of cats]として、動かします。
[number of cats]は、省略できます。省略すると、猫の数は58個となります。

スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。

pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題ないですが。

“`nyankosweeper.py
#!/usr/bin/python3

import curses
import random
import locale
import select
import sys

xsize = 40
ysize = 23
vvram = [[0 for i in range(ysize)] for j in range(xsize

元記事を表示

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

## この記事について
『Python1年生』(以下、書籍)でPythonを学習する超初心者の記録です。
後述の「やったこと」にも書いていますが、ようやく書籍を最後まで進めました。
その1, その2に引き続き、超初心者の学習記録ですので、今回も大したことは書いていないと思います。

■ バックナンバー
・[『Python1年生』で勉強中(その1)](https://qiita.com/megrim_q/items/c1417f507e96c1fb7015)
・[『Python1年生』で勉強中(その2)](https://qiita.com/megrim_q/items/333be033e5b4637d0eed)

## 実行環境
| OS・MW | バージョンなど |
|:-:|:-:|
| OS | Windows 10 Pro 21H2 19044.1645 |
| Python | 3.10.4 |
|IDLE |3.10.4|

## やったこと

前回(「その2」)の続きから書籍の最後まで、サンプルプログラムを試しながら読み進めました。
具体的には「第4章 アプリを

元記事を表示

Loguruでライブラリのログを出力する

[Pythonのライブラリが出力するログを活用しよう](https://www.rhoboro.com/2020/12/29/logging-and-debug.html)
をloguruでやる方法

# logging版

“`py:a.py
import requests
import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())

try:
requests.get(“https://expired-rsa-dv.ssl.com/”)
except requests.exceptions.SSLError:
logger.info(“SSLError”)
“`

“`
$ python3 a.py
Starting new HTTPS connection (1): expired-rsa-dv.ssl.com:443
SSLError
“`

# loguru版

[Wan

元記事を表示

MacのPython環境構築で3系にならないときの解決方法

先日、ふとAIをやってみたいと思い立ち、Pythonの環境構築を行ったのだが、手順通りにやったはずなのに、Pythonのバージョンが変わらない。
__Python2.7.16__ から __Python3.10.2__ にしたいのに、なんでか変更されない。。。。。。

## 環境
PC:Mac
Version:BigSur
shell:bash
  →bashかzshでインストール方法が若干変わるみたい。私はbashだったので、ここではbashの場合の解決方法

## やりたいこと
Macには初期でPythonがインストールされているが、
__Python2.7.16__ であるため、最新の __Python3.10.2__ をインストール、メインバージョンとしたい

## インストール手順
インストールは以下サイトを参考に実施した
参照:[Pythonの開発環境を用意しよう!(Mac)](https://prog-8.com/docs/python-env)

## 現状
インストールを手順通りに実施した後に、適用バージョンを確認したところ、
期待値としては

“`
$ pytho

元記事を表示

【Python】csv.DictReaderで数値(int型のデータ)を読み込む

# はじめに

プログラミング初学者です.CSVファイルをPythonのcsv.DictReaderで読み込む際に起きたエラーとその解決法を共有します.

# 環境

– Python 3.9.4

“`sh:ターミナル
$ python3 –version
Python 3.9.4
“`

# エラー発生時のコード

– 読み込み対象のファイル

“`csv:food_calories.csv
food,calorie
ramen,443
coffee,7
cheesecake,281
hamburger,300
chickencurry,690
“`

– 先のCSVファイルを読み込むコード

“`python:add_calories.py
import csv

sum_of_calories = 0

with open(“food_calories.csv”) as file:
data = csv.DictReader(file)
for row in data:
name = row[“food”]

元記事を表示

【Python】クラスオブジェクトの中身を確認する2つの方法

# はじめに

プログラミング初学者です.Pythonでクラスオブジェクトをそのまま出力しても中身が確認できないことを知りこの記事を執筆するに至りました.

# 環境

– Python 3.9.4

“`sh:ターミナル
$ python3 –version
Python 3.9.4
“`

# クラスオブジェクトをそのまま出力するとどうなるか

こちらのプログラムを動かしてみます.

“`python:weather.py
class Weather:
def __init__(self, name, weather, temperature):
self._name = name
self._weather = weather
self._temperature = temperature

tokyo = Weather(‘東京’, ‘晴れ’, 25)

print(tokyo)
“`

するとこのようになります.

“`sh:ターミナル
$ python3 weather.py
<__main_

元記事を表示

【mypy】リストに複数の型のデータを入れてはいけない【Python】

# はじめに

プログラミング初学者です.Pythonで書いたコードをmypyでチェックした際に起きたエラーとその解決方法を共有します.

# 環境

– Python 3.9.4
– mypy 0.940

“`sh:ターミナル
$ python3 –version
Python 3.9.4

$ mypy –version
mypy 0.940
“`

# mypyエラー発生時のコード

キャラクターの名前と身長を格納したリストを身長順に並び替えるというプログラムです.

“`python:sort.py
kimetsu_height: list[list[str, float]] = [
[‘tanjiro’, 165],
[‘nezuko’, 153],
[‘zenitsu’, 164.5],
[‘rengoku’, 177],
[‘inosuke’, 164]
]

sorted_kimetsu_height = sorted(kimetsu_height, key=lambda x: x[1])

print(sor

元記事を表示

1年前の日付を求める

1年前の日付とググるとdateutilの`relativedelta()`を使う旨がよく出てくる。
一目datetimeでマイナス365日で良さそうだが`うるう年`を考慮すると`relativedelta()`が良いようだ。

| 日付 | timedelta(days=365) | relativedelta(years=1) | 備考 |
| ——— | ——————– | ———————- | – |
| 2020/2/28 | 2019/02/28 | 2019-02-28 | 期待通り|
| 2020/2/29 | 2019/03/01 | 2019-02-28 | うるう年はずれる|
| 2020/3/01 | 2019/03/02 | 2019-03-01 | 同上|

“`

// 2020/2/28 の365日前
$ python3 -c “import d

元記事を表示

Anacondaセットアップ備忘録

# 旧環境がある場合

事前にインストール済のパッケージをtxtファイルにエクスポート
“`export.cmd
conda list –export > package-list.txt
“`

# Anacondaのインストール
[anaconda公式のWEBサイト](https://www.anaconda.com/)のDownloadよりインストール
* just meを選択
→user profile下層にAnacondaがインストールされる
* 基本的にすべての項目をrecommendでOK
anaconda.exeチェックもつけたまま

# Anaconda起動後
まず初期設定
“`init.cmd
conda init
“`

事前にリストアップしていたパッケージのインポート
“`inport.cmd
conda create -n [env-name] –file package-list.txt
“`

# 他コマンド
### 使用環境の情報を確認
“`check_info.cmd
conda info -e
“`
### 自分の環境[env-n

元記事を表示

OTHERカテゴリの最新記事