Python3関連のことを調べてみた2023年08月24日

Python3関連のことを調べてみた2023年08月24日
目次

DebianでSeleniumを使う

# 概要
スクレイピングをする必要があったので,Debianで実行しようと検索すると,UbuntuでChromeを使う記事が多く,Debianで実行するための記事が少なかったのと,せっかくパッケージで利用できるのにわざわざChromeをインストールする内容が多かったので,参考までにまとめます.
\# 実際はまとめる必要もないほど簡単なんですが..

# 必要なパッケージのインストール
“`
apt install chromium-driver python3-selenium
“`
これでchromiumを含め必要なパッケージがインストールされます.

# Seleniumの利用
これは色々なページで紹介されているので,そちらを参考にしてください.
## Proxy環境での利用
Proxy環境で利用する場合,proxyの情報を設定する必要があります.
python3-seleniumでインストールされるのはSelenium4なので,以下の設定が必要になります.
+ http_proxy
+ https_proxy
+ no_proxy

特に`no_proxy=localhost

元記事を表示

共有PCにjupyter notebook を入れようとしてハマった話

## はじめに
会社等で共用PCを使う時、共通アカウントでなく、利用者個々のアカウントを複数を作るパターンも多いかと思うが、その際、各ユーザー環境で `python` や `jupyter` のセットアップをするのも面倒だったので、Windows環境に入れる事を試してみた。
最終的には問題なくできたのだが、想定外にハマった部分があったため、その時の内容をメモとして残しておく。

## 実施環境
 Windows 10 Pro 
 python 3.8.10
 

## メモ内容

### まず最初に気を付ける事
インストールの際に、いくつかのオプション設定をする場面が出てくるが、以下の赤枠のチェックを忘れず、`C:\Program Files` 等にインストールする事。
(下図は、python 3.11系のインストール時の画面キャプチャ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654767/487d70eb-e5d7-2e81-fa9b-5d9e64160305.png)

#

元記事を表示

–user-data-dirを指定すると2回目以降のSelenium/Chromeが起動しない問題

# 問題
– Fedora に以降して selenium 関連も移行したら上手く起動しなくなった
– Btrfs
– `–user-data-dir` を指定して、1回目は起動する
– 2回目以降はエラー
– `–user-data-dir` の対象を削除すると起動するが、ログイン状態は解除されてしまう

“`:Error
Traceback (most recent call last):
File “/home/uyiromo/workspace/.venv/lib/python3.10/site-packages/seleniumwire/webdriver.py”, line 218, in __init__
super().__init__(*args, **kwargs)
File “/home/uyiromo/workspace/.venv/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py”, line 80, in __init__
sup

元記事を表示

知らなくても何とかなってしまうかもしれないpythonの基礎

# ■はじめに
~~雰囲気で~~pythonを使い始めてからはや1年弱。
教えてもらってから/資格勉強をしてから知ったが連発したのでまとめます。
知らなくても何とかはなりますが知ってるとコードが見やすくなったり、書く量が減ったりするかも。

# ■ 知らなくても何とかなってしまうかもしれない書き方
### ◇try: exceptの外のelse
try節の中身が最後まで実行される(exceptの処理にとばない)とelseの中身が実行されます。
例外処理が実行されるとelse内に書かれたprintは表示されません。
* 例外処理を通らない場合
“`sample.py
try:
print(‘処理1’)
# raise Exception(‘処理1の例外発生’)

except Exception as e:
print(‘処理1の例外エラー’)
print(e)

else:
print(‘try-exceptの外のelse処理’)

print(‘処理終了’)

“`

“`cmd.exe
C:\demo> python

元記事を表示

Pythonの文法

# はじめに
勉強がてらPythonの文法についてまとめたいと思います。

# 文法
さっそくまとめていきます。

## 変数について
~~変数とは、値を格納する箱のようなものです。~~
(2023/08/22:他のプログラミング言語における変数のイメージでした。)
Pythonにおける変数とは、オブジェクトへの参照が格納されます。
~~Pythonでは、他のプログラミング言語と異なり変数の初期化は不要です。~~
Pythonは、変数の宣言は不要です。
型の宣言もPythonでは不要ですが、「使う変数をどのように使うか」を明示的に示すために宣言した方が良いかと思います。
“`python
noSample: int = 0
strHelloWorld: str = “Hello World!!”

print(f”strHelloWorld: {strHelloWorld}”)
“`
## 定数について
Pythonでは定数を扱うことができません(サポートされていないため)が、大文字+アンダースコア(_)で表現することが慣例となっています。
“`python
HELLO_WORL

元記事を表示

RenderでPythonバージョンを指定する方法

# Renderとは?
– PaaSとしてPythonなどを実行する環境
– だいぶ前ですが[Herokuが有料プラン](https://forest.watch.impress.co.jp/docs/news/1435422.html)になったことから使用するようになった人もいいかと思います

# 設定方法

– Settings > Environment > Environment Variables
– Key: PYTHON_VERSION
– Value: [任意のバージョン]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187750/c54f0643-f0ba-b86f-b7e3-c1bb3d3cdc1e.png)

– 例えば、RenderでDeployを実行した際に、以下のようなエラーで必要なパッケージが取得できない場合はPythonのバージョンをローカルに合わせて設定することで解決することがあります。

“`
WARNING: You are u

元記事を表示

AtCoder過去問: Python~第一回アルゴリズム実技検定(随時更新)

AtCoderの過去問解いていきます。
競技プログラミングの練習というよりは、Pythonのコーディング学習の一環として。
できる限り無駄のないコーディングになるよう、一問ずつ試行錯誤しながら、
随時更新していきます。

[第一回 アルゴリズム実技検定 過去問](https://atcoder.jp/contests/past201912-open)

# A – 2倍チェック
[問題リンク](https://atcoder.jp/contests/past201912-open/tasks/past201912_a)

S = input()
if S.isdecimal():
print(int(S)*2)
else:
print(“error”)

Sが数字か、小文字かという可能性のみなのでこれでよいかなと。
3桁以外が来るなら len() でチェックが必要になりますが。
0始まりもこれで問題なし。

# B – 増減管理

[問題リンク](https://atcoder.jp/contests/past201912-op

元記事を表示

Django + heroku で非同期処理をするとき, 別プロセスからdjangoのデータベースにアクセスする方法

heroku公式が非同期処理の方法を公開している.

https://devcenter.heroku.com/ja/articles/python-rq

しかし上記サイトのworkerをそのまま使用したとき別スレッドでの処理で
データベースにアクセスできなかった

時間がかかる処理を別プロセスから行い結果をデータベースに保存したいとき
にdjangoのsetupを呼び出す必要があった.
下記プログラムのyour_appは自分のアプリ名を入力

“`python
import os
import redis
from rq import Worker, Queue, Connection

# 以下3行でdjangoのセットアップを行う
# your_appは自分のアプリ名を入力
import django
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘your_app.settings’)
django.setup()

listen = [‘high’, ‘default’, ‘low’]

redis_url = os.g

元記事を表示

pythonで型宣言すると便利だった

# はじめに
プログラミングをしていると、「この変数の型ってなんだっけ?」と疑問に思うことがしばしばある。
特に、大規模なプロジェクトやチームでの開発時に、変数や関数の挙動を正確に把握することは非常に重要である。
CやTypeScriptのように、型を定義できると視覚的にわかり静的型付け言語の良さを感じる。
Pythonでも型を明示的に宣言するとどうなるのか試してみたところ、これが予想以上に便利だったので皆さんに共有したい。

# 対象者
– Pythonを書く上で、変数の型を明示的にしたい方
– CやTypescriptのような静的型付け言語の書き方に慣れている方
– 型の不一致でのバグを早く気づきたい方

# 型宣言例

“`python
# 型宣言の基本
name: str = “Alice”
age: int = 30
pi: float = 3.141592653589793

# どんな型でもOKなany型
anything: any = “Data”

# リストやタプルの型宣言
numbers: list[int] = [1, 2, 3, 4, 5]
person:

元記事を表示

【Python】`random.sample()`と`random.shuffle()`の違いとは?サンプルコードで解説

# 概要
`random.sample()`と`random.shuffle()`の違いや`random.choice()`の使い方について、サンプルコードを交えて解説します。

# サンプルコード
サンプルコードとして、4つの国からなるグループAとグループBを作成し、それぞれのグループからランダムに一つの国を取得して対戦カードを作るコードを実装しました。

“`py
import random

class MatchupGenerator:
# クラスのコンストラクタ
def __init__(self, countries):
self.countries = countries

# すべてのデータを返す
def get_all(self):
return self.countries

# データをシャッフルしたリストを返す
def get_shuffle(self):
return random.sample(self.countries, len(self.countr

元記事を表示

エクセルからpandasを使ってデータフレームに読み込む

### 解決したいこと
※プログラム初心者ですので分からないところが多く,抜けている部分があると思いますのでご了承ください.

データフレームでの検索が一部うまくいきません.
すでに解決済みです.

### 環境
macOS version13.5
VSCode
python 3.10.9

## やりたいこと
「塾で生徒が登校した際,読み取るIDから生徒情報を抽出し,座席を指定する」プログラムを作ろうとしています.

#### 大枠
1. 143席を偶数奇数に分別.
2. エクセルに保存されている{ID, 氏名, 学年, 状態, 座席}をデータフレームとして読み込む.

–入力待ちの状態で待機–
3. キーボード(本番はバーコード)から生徒番号を取得.
4. 偶数席から指定して行き,偶数席がなくなれば奇数席を指定.
5. 生徒名と番号を画面に表示させて登校者に伝える&渡した座席は一時的に使用できないようにする.
6. データフレームにおける該当生徒の’座席’列に座席番号を追加

#### 以降付け加えようと思う機能
・すでに座席を持っている生徒番号の入力があった場合,その座席を使

元記事を表示

【Python】isinstance関数の使い方 & type関数との違いとは?

# 概要
`if isinstance`の使い方、また、`type`関数との違いをまとめました。

# サンプルコード解説

“`py
def process_data(data):
if isinstance(data, list):
total = sum(data)
return total
else:
return “Invalid input data”

data1 = [10, 20, 30, 40, 50]
data2 = “This is not a list”

result1 = process_data(data1)
result2 = process_data(data2)

print(result1)
# 150
print(result2)
# Invalid input data
“`

### 基本構文

`isinstance()`関数の基本構文は以下の通りです:

“`python
isinstance(object, classinfo)
“`

– `object`: 型

元記事を表示

Pytorchでのカスタムオプティマイザー制作方法をまとめた

Pytorchでtorch.nn.Moduleを継承してカスタムレイヤーを制作する記事は日本語記事でもかなりありましたが、最適手法をtorch.optim.Optimizerを継承して制作している記事が日本語記事では見当たらなかったので今回記事を書くことにしました。この記事は主に、[Writing Your Own Optimizers in PyTorch](https://mcneela.github.io/machine_learning/2019/09/03/Writing-Your-Own-Optimizers-In-Pytorch.html)や、[Custom Optimizers in Pytorch](https://www.geeksforgeeks.org/custom-optimizers-in-pytorch/)といった記事を参考にしています。
この記事の内容は製作中の[Attention from scratch](https://github.com/SuperHotDogCat/Attention-from-scratch)というリポジトリから内容

元記事を表示

【初心者向け】【Pytest】フィクスチャは引数配置順に実行されることに気を付けよう

# 初めに

冷静に考えると当然だけど、他のUnitテストフレームワークには無い要素なので記事化しました。

# フィクスチャは引数配置の順番に実行される

今回例題とするコードはこんなものになります。

“`mermaid
flowchart TD
subgraph フローチャート
start(“「A」が入った文字列リストを空にする”) –> a(“空の文字列リストに「B」を入れる”)
a –> end_(“文字列リストが[”B”]であることを確認する”)
end
“`

フィクスチャは引数配置順に実行されます。

そのためフィクスチャを利用するテスト`testFixture`の引数を`init_strs, add_b`の*順に並べるとフローチャート通りに実行されテストが通ります。*

“`python
import pytest

strs: list[str] = [“A”]

@pytest.fixture
def init_strs():
strs.clear()

@pytest.fixture
def add_b():

元記事を表示

「輪廻転生!訳ありローコードツールをPythonで再実現」社内冷蔵冷凍庫監視システムの作成 第二回

こんにちは!
東京圏のとある微生物検査室で、毎日食品安全を担保するために仕事を頑張っています。

私の`Qiita初投稿`は検査室にある冷蔵冷凍庫のデータを`API`で抽出して、ローコードツール`Make`を使って、`LINE Bot`に自動送信する仕組みを作成することです。詳細は以下の記事を参考してください~

https://qiita.com/mimicetacea/items/db7d1f7232207e66370b

これ実は、使えなかったです。なぜかというか、セキュリティ問題があります。具体的に言うと、社内の設備情報を個人LINEに流すのは問題があります。
そうですよね、考え不足です!(社内でデジタルを始める人あるある問題w)
ではなにしたら、使えるようになりますかね?少しIT部門の方と相談したら、「デジタルはもう慣れているようから、ローコードではなく、`Python`で実現するようとしたらどうですか?」の意見を戴きました。
なるほど!その手もあります!なぜ`Python`がいいのか正直私も分からないですが、でもIT部門の方

元記事を表示

multiprocessingの進捗を表示する備忘録

# multipocessingの進捗を表示する
初めに、プログラム全体を以下に示す。
“`
import os
import time
import random
from tqdm import tqdm
from multiprocessing import Process,cpu_count,Pool

def hoge(a,b,c):
“””
並列化したい処理が書かれている関数
“””
time.sleep(random.random()*5)
with open(“tmp.txt”,”a”) as f:
f.write(“{}を{}個{}で購入した\n”.format(a,b,c))

def wrap_hoge(params):
“””
imap_unorderedの引数で指定する関数オブジェクトは1引数しか取れないため、hogeをラップする
“””
hoge(*params)

params = []
param1s = [“リンゴ”,”ミカン”,”メロン”]
param2s =

元記事を表示

Virtualenvが動かなかったのでpyランチャーとvenvで何とかした話

ある日、virtualenvを入れようとしたら… こうなった
“`
python -m virtualenv venv –python 3.8.5
PEP-514 violation in Windows Registry at HKEY_LOCAL_MACHINE/PythonCore/3.11/InstallPath error
“`

原因は存在しないレジストリキーを参照しようとしてエラーが出ている模様。

ここらへんも読んだけど解決には至らず

https://peps.python.org/pep-0514/

で、venvを代用しようと(この時点でホントはやりたくなかった)していたら以下を発見。

https://pi-trade.tech/programing-learning/python-venv-how-to/

※やりたくなかった理由は以下

[https://mycodingjp.blogspot.com/2018/12/python-venv-virtualenv.html#:~:text=一方で、virtualenv は、Pythonのバージョン自身も

元記事を表示

主要言語で任意精度演算

# JavaScript

“`fig.html







```

https://jsfiddle.net/orb85g0d/

# Python
Python 3ではintに上限はない模様。

```fig.py
# Python 3
a = "3"
b = "3"
for i in

元記事を表示

Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar. への対処方法

# 警告の意味
Githubの[issues](https://github.com/facebookresearch/fastText/issues/1056)の内容を参考にすると、単にload_modelの使用が非推奨であることを伝えているだけで、気にする必要はないようである。

# 警告を消したい
警告をなくしたい場合、以下のように書くことで解決できる。
```
from fasttext.FastText import _FastText
fasttext_model = _FastText(model_path=fasttext_model_path) #fastext.load_model(path)の代わり
```
"_"がついているクラスを直接読んでいるためあまり推奨はされないが、fasttext.load_modelの実装は以下に示すようにprintで必ずWarningを出した上で、_FastTextクラスのインスタンスをreturnしているだけである。そのため、Warningを消したい場合、_FastTextクラスのインスタンスを直接作り出すしかないと考えられる。

元記事を表示

Python: APIなしでYouTubeライブの動画から主要チャット内容を拾う(スパチャ対応)

# 注意・免責
:::note warn
注意:著作権上の問題もありますので利用には著作権者への同意を**ご自身**でお願いします。
:::
:::note alert
免責:私個人は取得されたデータによるいかなる損害も**保証しません**。
:::

# 概要
動作確認:Python3.11
使用してYouTubeライブの動画から主要チャットの内容の
* 元々のJSONファイル
* プレーンテキストファイル(UTF-8)
を出力します。なお、テキストファイルには「日付、ユーザー名、チャット内容」のみが抽出されているものが出力されます。
# どのような動作をするか
URLからJSONファイルを取得し、pythonのソースコードと同じディレクトリ(フォルダ)に出力し、それから「日付、ユーザー名、チャット内容」が抽出されたテキストファイルも同じディレクトリ(フォルダ)に出力します。

:::note info
つまり
URLを代入 → JSONファイル出力 → テキストファイル出力
:::

# 前準備
必要なライブラリは以下のとおりです。インストール済みの方はそのままで結構です。
```

元記事を表示

OTHERカテゴリの最新記事