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

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

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”)
“`

# ポイント
su

元記事を表示

mutableとimmutable

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

元記事を表示

Pythonのメソッドいろいろ

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 例外処理の解説

# 例外とは
構文エラー(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のオプション設定は特に必要な

元記事を表示

Pythonでマルチスレッドを実現する

# はじめに
Pythonにおけるマルチスレッド処理について調べて学んだことをまとめました。
Python初学者の参考になれば幸いです。

# マルチスレッド処理とは
複数の処理を並行して走らせることです。IOバウンドな処理の効率化が見込めます。

CPUバウンドな処理の効率化については、マルチスレッドではなくマルチプロセスが適しています。
マルチスレッドとマルチプロセスの違いについては、[こちらの記事](https://qiita.com/Jungle-King/items/1d332a91647a3d996b82)が分かりやすかったので、適宜参照してください。

# マルチスレッド処理を実現するPython標準ライブラリ
Pythonでは、マルチスレッド処理を実現するための標準ライブラリがいくつか用意されています。

## threading
Python2以前からある、マルチスレッドを実現するための標準ライブラリです。
[公式ドキュメント](https://docs.python.org/ja/3/library/threading.html)

使い方
“`Python
im

元記事を表示

【Python】pass と Ellipsis の使い分けを検討する

## はじめに

Pythonを書く上際に、処理を省略・仮実装・抽象化する場合があると思います。
その際に、`pass`文を使うべきか`Ellipsis`を使うべきか検討したいと思います。

※ 本稿は、部内のLTでプレゼンされる内容の忘備録です。

## 環境

– Python 3.10.6

## 結論

:::note info
下記のように使い分けるのが良さそう
`pass`文: 「何も実行しないこと」がその処理として本質的な場合に利用する。
`Ellipsis`: 「未実装な処理」や「コンテナデータ型の拡張表現」として利用する。
:::

## pass

誰もが知っているおなじみの`pass`文です。

> pass はヌル操作 (null operation) です — pass が実行されても、何も起きません。
> pass は、構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして有用です。[^1]

公式ドキュメント曰く、下記のように未実装関数の仮置きに使えます。

“`py
def hoge():
pass
`

元記事を表示

[python]ニコニコ動画のダウンロード mylistから一括

ニコニコ動画のダウンロード マイリストから一括
ただのメモに近い。

“`python
# -*- config: utf-8 -*-
#——————————————————————————
# import
#——————————————————————————
from niconico import NicoNico
import pprint
import concurrent.futures
import time

# 並列用のラッパー
def wapper_x(line_list, max, b):
for i in range(len(line_list)):
if i % max == b:
url = line_list[i][1]
with client.video.get_video(

元記事を表示

スマートウォッチから取得したデータを分析してみる

# Garmin製スマートウォッチ
先日、Garmin社のVenu2Sというスマートウォッチを興味本位で購入しました。
Apple Watchと迷ったのですが、ヘルスメーター的な使い方をしてみたかったので、悩んだ挙げ句こちらを買いました。

こんな時計です。
https://www.garmin.co.jp/products/wearables/venu-2s-tundra-champagne/

# 意外に開発者向けツールが充実していた
はじめは、「アプリがあってスマホ連携ぐらいはできるんだろうな」と思っていたのですが、公式SDKがあってホーム画面に表示するデータをカスタマイズできたり、取得したデータは全部CSVで出力できたりと、意外に面白い機能がたくさん揃っていました。取得できている主なデータは以下のようなものです。
* ストレスレベル
* 登った階数
* 歩数
* 血中酸素
* 呼吸数
* 睡眠時間
* 睡眠スコア
* 消費カロリー
* Body Battery(残り体力的な数値です)

Body Batteryやストレスレベルは心拍等の生の値とは違い、取得できているデータ

元記事を表示

正規表現:曖昧なパターンはエンジンによって動作が変わる(教訓)

検索してどういうことなのか調査してみようとしたのですが、上手に検索できませんでした…。
検索しても全然それっぽい情報が出てこない!
のでとりあえず記事にしてみます。

もし原因をご存じの方いましたらお教えいただけると嬉しいです…!

# 環境
– グループ1(JavaScript系)
– JavaScript (Firefox 104.0.2)
– JavaScript (Google Chrome 105.0.5195.127)
– グループ2(Perl系など)
– PCRE (PHP 7.3.11 & PCRE 10.32 2018-09-10: [RegExr.com](https://regexr.com/))
– Python 3.10 (re モジュール)
– コメントに頂いた検証:Ruby 3.1.2 (Onigmo)
– コメントに頂いた検証:CotEditor 4.3.4 (ICU)

PCREは「PCRE ライブラリは、Perl 5 と同じ文法構文を用いた 正規表現パターンマッチ処理を実装した関数群ですが、多少異なる点もあります (以下を

元記事を表示

OTHERカテゴリの最新記事