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

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

openpyxlでiter_rows()を使ったワークシート行のイテレーションを中断するとファイル削除できなくなる

openpyxlでエクセルファイルを開いたのちに削除しようとしてもプロセスがファイルをブロックしていて削除できなかった。

Windows環境
* Windows8.1
* Python 3.10.7
* openpyxl 3.0.10

“`python
import os
from openpyxl import load_workbook

FNAME = ‘sample.xlsx’
# EXCELファイルをオープン
wb = load_workbook ( FNAME, read_only=True )
sheet = wb.active
# 行をイテレーション
for row in sheet.iter_rows() :
# なにか処理
# イテレーションを中断
break
# Workbookオブジェクトを閉じる
wb.close()
# EXCELファイルを削除 –> Win32エラー
os.remove ( FNAME )
“`

根本的な対策はみつからなかった。
イテレーションを中断しないように変更する。

“`python
impo

元記事を表示

【プログラミングにおける高速化】AtCoderで実行時間超過(TLE)を減らす方法

# はじめに

筆者「さあ~周りの友達や同僚もAtCoderやってるし、腕試しでAtCoder始めてみるかあ~」
AtCoder100点問題「うわあああああ(撃墜)」
筆者「よし!クリア!」
AtCoder200点問題「やられたああああ(討伐)」
筆者「よし!いける!」
AtCoder300点, 400点問題「フンッ『”TLE(実行時間オーバー)”』」
筆者「!?!?!?!?」

AtCoderをやっていく中で、以下のようなTLEの結果に出くわすこと多いのではないでしょうか??
TLE(Time Limit Exceeded:実行時間超過)とは、**アルゴリズムが正しくても、規定の実行時間を過ぎてしまうエラー**のことを表します。特に、300点問題(C問題)以上になってくると、TLEに悩まされることが多いと思います。
![001_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2866918/da6525f6-b66b-296a-be7b-51f6f7cd46d1.png)

そこで、今回はAtCod

元記事を表示

【M1 Mac版】Python3のインストール手順まとめ

# 手順
:::note warn
Homebrewがインストールされていること
:::

## 1. pyenvのインストール
“`terminal
$ brew install pyenv
$ pyenv -v
“`

“`terminal:実行結果
pyenv 2.3.0
“`

## 2. pyenvのPathの設定
– 下記コマンドを1行ずつ実行
“`terminal
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.zshrc
$ echo ‘export PATH=”$PYENV_ROOT/shims:$PATH”‘ >> ~/.zshrc
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.zshrc
$ source ~/.zshrc
“`

## 3. pyenvでインストールできるPythonのバージョンを確認
“`terminal
$ pyenv install –list
“`

## 4. Pythonのインストール
“`terminal
$ arch -arch x8

元記事を表示

python – inputがある限りループする

# 例

無限ループさせておいて入力が空であればループを抜ける。

“`py
while True:
x = input()
if x == “”:
break
else:
print(x)
“`

`while line = input():` みたいな簡潔な書き方は出来ない気がした。

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

python で指定回数ループする例: for i in range(10)

# 例

“`py
for i in range(10):
print(i+1) # 1から10までを出力
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

(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,

元記事を表示

OTHERカテゴリの最新記事