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

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

(PyMuPDF) M1 Mac で “import fitz”できなかったがキャッシュ削除で解決した(備忘録)

### “import fitz”で問題が発生しました (PyMuPDF)

https://python-work.com/pdf-get-text/

の”import fitz”を実行できませんでしたが、キャッシュ削除で解決しました。
解決作業の備忘録です。

### 手順(以下の作業は、arm64上で行なっています)

##
“`
name -m

#arm64
“`
arm64と返ってきたなら、以下を実行

そうでない場合は、Rosettaをoffにしてやる必要があります。

### 以下を実行
“`
pip3 install fitz
brew install mupdf swig freetype
pip3 install PyMuPDF
pip3 install frontend
“`

下記サイトの方法をpip3に変えるだけでは、

https://cdmana.com/2022/03/202203221858329522.html

“`
pip3 install fitz
brew install mupdf swig freetype
pip3 in

元記事を表示

matplotlibでtickparamsを使ってもticklabelが消えないときの対処法

おそらく対数スケールかつ目盛りが細かすぎる場合にTickが消えないことがあります.

“`python
import matplotlib.pyplot as plt

_, ax = plt.subplots()
ax.tick_params(left=False, labelleft=False)
ax.set_yscale(‘log’)
ax.grid(which=’minor’, color=’gray’, linestyle=’:’)
ax.grid(which=’major’, color=’black’)
“`

このときにAd-hocに対応するためにFontsizeを最小にするほうほうがあります.

“`python
ax.tick_params(axis=’y’, which=’major’, labelsize=1)
ax.tick_params(axis=’y’, which=’minor’, labelsize=1)
“`

元記事を表示

人口の予測

# 概要

統計関係の定番ネタ、将来人口推計です。
百年先までの日本の人口の推移を予測します。

# 準備

まず、ライブラリパッケージを読み込んで、データを用意します。
そして必要な数値の計算も行います。

“`python
# — ライブラリ読み込み —
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
plt.rcParams[‘font.family’] = ‘Yu Mincho’

# — データ —
# 年齢5歳階級別女性人口・有配偶女性人口:2015年(出典:統計局・国勢調査)、
# 年齢5歳階級別母の年齢別出生数:2016年(出典:統計局・人口動態調査)
dfBorn = pd.DataFrame({
‘年齢区分’:[’15~19歳’, ’20~24歳’, ’25~29歳’, ’30~34歳’, ’35~39歳’, ’40~44歳’, ’45~49歳’

元記事を表示

[ABC270] A,B,CをPythonで解いてみる

## はじめに

初投稿になるが、コンテスト中に今までできなかったことができたことからその記念(?)も兼ねて投稿する。

## [A – 1-2-4 Test](https://atcoder.jp/contests/abc270/tasks/abc270_a)

配点が1,2,4点とあるので2進数で考える。
少なくとも一方が解けた問題は解け、2人とも解けなかった問題は解けないとあるので論理和をとればよい

“`Python:a.py
A,B = map(int,input().split())
print(A|B)
“`

## [B – Hammer](https://atcoder.jp/contests/abc270/tasks/abc270_b)

XとYの位置関係から先に考えて、経路に壁がある場合にZが壁より原点寄りにあるか考える。

ゴールに到達可能なのは以下のパターンである。
– X,Yが異符号 (1)
– X,Yが同符号
– XがYより壁寄り (2)
– ZがYより壁寄り (3)

(3)に関しては、Xへの最短経路にZがない場合(X,YとZ

元記事を表示

Windowsのファイルの保存場所を開く(Open File Location)コマンドをPythonで実行する

# 実現目標
:::note
・スタートメニューから `More > Open File Location`
・ショートカットから `右クリック > Open File Location`

「対象のファイルが存在するフォルダが開き(または、移動して)、対象のファイルがアクティブになる」操作をPythonで実行する
:::

# 用途
:::note warn
たとえば、Imageビューアなどで右クリックして画像の保存場所を開けます。
:::

# コード
“`python
import os
import subprocess

def open_file_location(absolute_path):
# windows用のパスへ変換
path = os.path.realpath(absolute_path)
# subprocessでコマンドシェルを実行
subprocess.Popen(f’explorer.exe /select, {path}’)

open_file_location(“C:/Images/image1.jpg”)

元記事を表示

mutableとimmutable

# mutableとは?
変更できるオブジェクト
* リスト
* 辞書
# immutableとは?
変更できないオブジェクト
* タプル
* str
* int
* float
* bool
* None

元記事を表示

Python3エンジニア認定基礎試験に出てきそうな関数とメソッド

Python3エンジニア認定基礎試験に出てきそうな関数をまとめました。
# range()
* 引数に指定した数の一つ前まで、0から連番で要素が入る。
* ○〜○までの整数を取得することもできる。
“`
3~29までの数字
>>> x = list(range(3,30))
>>> print(x)
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
“`
# count()
* リストの中に指定の要素が何回登場したかを数える。
# len()
* リストの全要素数をカウントする。
# round()
* 小数点を四捨五入する(厳密には四捨五入ではない)。roundだから、小数点を丸める的なニュアンス。
“`Python
>>> round(123.5)
124
>>> round(124.5)
124
“`
# zip()
* 2つ以上あるリスト、辞書、タプルをまとめることができる。
“`Python
>>> a = [1,

元記事を表示

【Python】任意の試薬と生成物で秤量計算

# 前提
複数種類の試薬(反応物)から生成物を作りたいときに、各試薬をどれくらいの質量で混ぜればいいのかを計算する必要がでてきます。例えば、

### 生成物

|組成|質量|
|—|—|
|$ \mathrm{La} \mathrm{O} _{0.5} \mathrm{F} _{0.5} \mathrm{Bi} _{1-x} \mathrm{Pb} _{x} \mathrm{S} _2 $|$\mathrm{2 \ g}$|

### 試薬

|組成|分子量|
|—|—|
|$ \mathrm{La_2 S_3} $|373.99|
|$ \mathrm{Bi_2 O_3} $|465.958|
|$ \mathrm{Bi_2 S_3} $|514.14|
|$ \mathrm{Pb F_2} $|245.2|
|$ \mathrm{Bi F_3} $|265.975|
|$ \mathrm{Bi} $|208.98|

としたときに、まず、
1.生成物に合う各試薬の分子数の比を求め、
2.分子数あたりの質量である分子量と生成物の質量を使って各試薬の質量を求める。

元記事を表示

Python 例外処理の解説

# 例外とは
構文エラー(SyntaxError)以外のエラーを例外エラーとする。

# エラーの種類
## [ZeroDivisionError]
「/」や[//]、「%」で計算する時に割る数が0だった時に起きる。
割る数が0でないか確認する。
## [NameError]
スペルミス、変数名ミスなどで名前が見つからなかった時に起きる。
スペルミスや変数名を間違えていないか確認する。
## [TypeError]
異なるデータ型同士での演算や関数での処理が行われた時に起きる。
データ型が間違っていないか確認する。
## [ValueError]
数値が適切でないときに起きる。(型は合っている)
数値を確認する。(引数とか)
# 書き方
* try →例外が発生するかもしれない処理
* except →例外が発生した後の対応方法
“`
try:
例外が発生するかもしれない処理
except 想定されるエラー名:
検証したい処理で、想定されるエラーが起きた時の処理
“`
## 例
“`
while True:
try:
x = int(in

元記事を表示

神エクセルをHTMLに!Python編 その1

# はじめに
神エクセルとか、方眼紙エクセルとか、ネ申エクセルと言われる、デジタル化の弊害になっているやつを退治したい。

いや、退治するよりも活用を図りたい。

過去の様式の蓄積を無駄にすることなく、デジタル化を進めるには、神エクセル職人によって作成された様式を、HTMLのフォームに変換できるようにすればいいのではないか?

以前、[神エクセルをHTMLのフォーム化するVBAマクロ](https://qiita.com/yoho/items/80f46d1f97ae99d4e970) について記事にしたのですが、
VBAの仕様がMacとwindowsで異なるところがあったり、MacではVBAの辞書機能が使えないらしいということがあったりして行き詰まっていました。

この記事では、最終的には、phtyonのライブラリopenpyxlを使用して、神エクセルをHTMLのフォームに変換します。

完成イメージ:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595771/2976fb49-c

元記事を表示

Python lambda解説

# lambdaとは?
無名関数のこと。
関数を短く書けて便利。
関数名がないので、何回も使いまわしたい関数には使わない。

# 書き方
## 基本
“`
lambda 引数 : 処理
“`
## lambdaを使わない例と、使った例
### lambdaなし
“`
def example(x, y):
return x + y
“`
### lambdaで書いた場合
“`
lambda x,y : x+y
“`
関数名なしで、短く書ける
## lambdaの引数に値を入れる時
さっきの例のxとyに値を入れる時の書き方
“`
(lambda 引数:処理)(引数に入れたい値) と書くので、
(lambda x,y : x+y)(1,2)
となる
“`

元記事を表示

Pythonのバージョン確認 for macOS

Pythonの環境構築のため

macにあるPythonのバージョンを確認

macOS 10.14

ターミナルappで
`$ python –version`
結果
`Python 2.7.16`

IDEには3.10.6とあるため
ターミナルappで
`$ python3 –version`
結果
`Python 3.10.6`

と確認。
単純にPythonとだけいれるのでなく、バージョンの番号をつけてコマンド実施が必要と認識。

元記事を表示

初心者がPythonのDjangoでポートフォリオを作成してみた(AWSデプロイ)

## 紹介
どうも、独学でウエブアプリを作っているクリスと申します!
最初はただの問題解決のため自分でアプリを作ろうとしましたが、まさかポートフォリオになるとは思いませんでした。(笑)

今回作ってみたものを紹介したいと思いますが、まずはその背景から語ります。

## 背景
自分は会社の寮に住んでいます。
寮は11部屋の一軒家ですが、なぜか電気代を計算してるメーターが6個しかない。
5部屋は各自のメーターで、残りの部屋はシェアという感じです。
なので毎月光熱費を計算するのを苦労してました。
そのうえ、他の部屋に住んでいる者は変わったりしますので、みんなが何日間、どのくらい使っているかを計算するのもかなり難しいです。(サービス業の従業員の出入りは激しいです)

そのため、自動的に計算してくれるアプリを作りたいと決めました。

## アプリ概要
MVCアプリ、基本的なCRUD処理と自分で作ったアルゴリズムで一人一人の光熱費を計算して、ユーザーに表示する。

### メイン機能
– 光熱費照会
– 日別で部屋のデータ照会(誰が何の部屋にいつ住んでいるか)
– 光熱費入力
– 部屋データ入力

元記事を表示

Detectron2でセグメンテーション

# Jetson xavierでDetectron2を用いた画像解析

### 環境

| 名前 | バージョン |
| ——– | ——– |
| ubuntu | 20.04 |
| detectron2 | 0.4 |
| pytorch | 1.11.0 +cu113 |
| torch vision |0.12.0+cu113 |
| CUDA | 11.3 |
| python | 3.8.10 |
|jetpack | 4.4 |

リポジトリのタグを指定して使用するときは[こちらの記事](https://qiita.com/iaoiui/items/fc318fa75cce3227b638)を参考にした

### アノテーション
– Detectron2はCOCO形式に対応しているようなのでアノテーションツールにはCOCO-Annotatorを使用する
– COCO-Annotatorはdocker環境が必要。docker環境の構築などは[こちらの記事

元記事を表示

pythonの”関数”でも、”関数”を引数として指定できる

#### pythonの”関数”でも、”関数”を引数として指定できる
例として、下記の関数を微分してやりたいとします。
“`
def f_ex(x):
return 2*x
“`
例えば、関数に”関数”を引数として指定しない場合、下のように書けますが、取り回しが非常に悪いです。
“`
def diff_ex(x):
h = 1e-4
return (2*(x+h)-2*(x-h))/(2*h)
“`
実行例
“`
>>> diff_ex(8)
1.9999999999953388
“`
そこで、関数に”関数”を引数として指定してやることで、簡単に処理を使い回すことができます。
代入したい関数の引数記述部()を省略してやることで、関数に”関数”を引数として指定できます。
例えば、下記のように、好きな関数を引数として指定し、微分する関数を作ることができます。
“`
def diff_f(f, x):
h = 1e-4
return (f(x+h)-f(x-h))/(2*h)
“`
実行例
“`
>>> diff_f(f_ex,

元記事を表示

Python基礎 リスト、タプル、セット、ディクショナリ

## リスト
### append() リスト末尾に要素を追加する
“`
>>> example = [1,2,3]
>>> example.append(4)
>>> example
[1, 2, 3, 4]
“`
### extend() リストにリストを追加する
“`
>>> animal = [‘elefant’, ‘giraffe’, [‘cat’, ‘dog’]]
>>> sea_animal = [‘octopus’, ‘dolphin’]
>>> animal.extend(sea_animal)
>>> animal
[‘elefant’, ‘giraffe’, [‘cat’, ‘dog’], ‘octopus’, ‘dolphin’]
“`
### insert() リスト内の特定のインデックスに要素を追加できる
“`
>>> animal.insert(2, ‘lion’)
>>> animal
[‘elefant’, ‘giraffe’, ‘lion’, [‘cat’, ‘dog’], ‘octopus’, ‘dolphin’]
“`
### rem

元記事を表示

ValueError: unsupported hash type md4を出さなくする方法

## ValueError: unsupported hash type md4がでて困った

あるスクリプトを実行するとエラーがでてしまった。
“`python

File “/usr/lib/python3/dist-packages/ntlm_auth/compute_hash.py”, line 66, in _ntowfv1
digest = hashlib.new(‘md4’, password.encode(‘utf-16-le’)).digest()
File “/usr/lib/python3.10/hashlib.py”, line 166, in __hash_new
return __get_builtin_constructor(name)(data)
File “/usr/lib/python3.10/hashlib.py”, line 123, in __get_builtin_constructor
raise ValueError(‘unsupported hash type ‘ + name)
ValueErr

元記事を表示

PythonでSlack Appをサクッと作るメモ

最近slack appの作り方を覚えたので、今回は推しの情報収集のためのBotを作りながらメモを残します。
今回は、指定したキーワードを含むツイートを100件集めてwordcoud作成し、Botを通してSlack上に表示します。
言語処理が必要なので、言語はPythonを使います。
なお、wordcloudを生成する部分の実装についての詳細は割愛し、Botの作成 ~ Botを通して通知を送ったり、通知の見た目を整える方法を書きます。
また、複雑なことはしないのでslack appを作成するためのライブラリ等は使用していません。

## 手順
### slack appを作成してtokenを取得する
[slack api](https://api.slack.com/apps)のページで、`Create New App`をクリックし、slack appを作成します。
基本的に`From scratch`を選べば問題ないです。
![image_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533290/

元記事を表示

urllib.requestでデータのダウンロードを行う際に発生したSSL証明書に関するエラーについて

# 実行環境
Python 3.9.7

# 経緯と起こったこと
『増補改訂 Pythonによるスクレイピング&機械学習 開発テクニック』(クジラ飛行机 著、ソシム株式会社)を参考に、「urllib.requestを使用してWebサイトから画像をダウンロードする」という内容のサンプルプログラムを写経して試してみました。

すると、以下のエラーが……
証明書関連で何かしらのエラーが発生したようです。
> URLError: \

ちなみに、サンプルプログラムの画像のダウンロード先([リンク](https://uta.pw/shodou/))の証明書発行元はLet’s Encryptのようでした。

# 解消方法
ソースコードに以下の2行を追加したところ、エラーにならず画像をダウンロードすることができました。

“`Python:
import ssl
ssl._c

元記事を表示

【Django】モデルフィールドのnullとblankオプションの違い

# nullとblankオプションの違い
Djangoのモデルフィールドを設定する際に、オプションで設定するnullとblankはどう違のか。

一般的には

「**nullはデータベースの中身が空かどうか、blankはフォーム送信時の入力が空であるかどうか**」

であるとされています。

デフォルトではnullもblankもどちらもFalseで、それぞれデータベースの中身が空でないこと、フォーム送信時の入力が必須であると要求していることになります。ではなぜ、別々にオプションを設定する必要があるのでしょうか、以下の4パターンを事例に整理してみます。

## 1.null=False, blank=Falseの場合(デフォルト)
直訳すると「フォーム送信時にこのフィールドの入力は必須です。データベースに格納されるデータも空であってはいけません」ということになります。
ユーザー情報の入力画面で、Emailなどの必須項目のフィールド設定を行う際にはよく使うオプション設定になります。この設定はデフォルトになっているので、**入力必須フィールドはnullとblankのオプション設定は特に必要な

元記事を表示

OTHERカテゴリの最新記事