- 1. 【Python】uvで始めるPythonプロジェクト
- 2. 野球の審判(力試し編) (paizaランク C 相当)
- 3. [初心者向け]Pythonのプロジェクト管理ツールを使う理由とツールの種類
- 4. pythonでのエラー処理機能について
- 5. Anacondaの仮想環境にTensorflowを入れられなかった話
- 6. Aruba AP の BSSID を取得
- 7. playwright メモ
- 8. [初心者向け]VSCodeにRuffを設定する
- 9. 1. Pythonでのブラウザ制御のマスター:AIブラウザエージェントを構築する方法
- 10. pythonでエクセル操作をChatGPTに聞いてみた(罫線、スタイル)
- 11. uvで始めるPythonプロジェクト管理
- 12. PythonのUnboundLocalErrorが発生する原因を理解する
- 13. 【Python】eval関数の使い方とリスク、第二引数・第三引数を活用した制限方法
- 14. Python ライブラリとかimportの話 その2(自分用)
- 15. Python ライブラリとかimportの話 その1(自分用)
- 16. 【Python】ざっくり見てわかるデコレータの作り方と使い方
- 17. pythonでプロセス全体をpingでモニタリングするサンプル
- 18. Python文法~初級から中級~
- 19. 【ROS2 colcon buildトラブルシューティング】AttributeError: module ‘importlib_metadata’ has no attribute ‘EntryPoints’の対処方法
- 20. pythonでエクセル、パワポ、メモ
【Python】uvで始めるPythonプロジェクト
## はじめに
**Ryeで始めるPythonプロジェクト**を執筆してから半年近く経ちました。
(よければ、まずRyeの記事から読んでいただけると嬉しいです)https://qiita.com/kissy24/items/37c881498dcb8a01f3bd
この半年でuvが大きく成長し、Ryeと同等かそれ以上のプロジェクトおよびパッケージ管理ができるようになりました。そのため、今度は**uv**を使って開発を進めたい方向けの記事も上げてみようと思いました。
本稿はRyeの記事同様、ハンズオン形式で誰でも気軽にプロジェクトを作れるようになっています。また、Ryeとの違いについても簡単にですが、言及します。### ハンズオン環境
– Ubuntu / MacOS
– uv : 0.4.24## 0. uvとは?
Rustで書かれた非常に高速なPythonパッケージとプロジェクト管理ツールです。
https://docs.astral.sh/uv/
以前に、Ryeの記事を執筆した際には、「パッケージインストーラー(pip等)の代替」ような位置づけでuvを利用して
野球の審判(力試し編) (paizaランク C 相当)
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_01
### 考え方
Pythonはswitch文がないとのことで、辞書を使用しています。
アウトかフォアボールが成立した時点でループを抜けたほうがいいかもしれません。“`python3
s=[input() for _ in range(n)]
c={“ball”:0, “strike”:0}
for i in s:
c[i] += 1
if c[“strike”] == 3:
print(“out!”)
elif c[“ball”] == 4:
print(“fourball!”)
else:
print(i+”!”)
“`
[初心者向け]Pythonのプロジェクト管理ツールを使う理由とツールの種類
## 対象読者
– Python初学者
– 環境構築とか、仮想環境とかよく分からない人## なぜプロジェクト管理ツールを使うのか
プログラミングの勉強をしているときは、Pythonプロジェクト管理ツール(ここではPythonのバージョン管理と仮想環境管理をするツールを示します)のことを全く気にしていませんでした。他の人と共同開発するわけではないし、開発期間も短いのでバージョンの変更で苦しむこともありません。
しかし実際に仕事をしたり、仕事を依頼する際にはプロジェクト管理をしっかりしていないと、全く仕事が進まなくなってしまいます。この段階にきて、プロジェクト管理ツールの大切さを理解して手をつけましたがあくまでなんとなくでした。今まではwindows環境でcondaを、Mac環境でpyenv+poetry でプロジェクト管理を行っていました。
condaは統計や科学系の計算に強く、Rなどの私が以前使用していた言語も使えたので使用していました。condaはPythonバージョン管理とライブラリ管理が一元的に行えて便利でしたが、一部使えないライブラリがあったりして使いづらい部分があ
pythonでのエラー処理機能について
# 背景
pythonでdfをfor文で扱うことが多く、デバッグ用にログを残すために下記を実現したく調査した。
– エラーが出ても全dfの処理を行う
– エラーはログに出力する。INFOログも残す
– ログ名には、上書きされないようにタイムスタンプを付与したい
– エラー処理で終了しても、正常処理時と同様の処理を行いたい# それぞれの解決策
– エラーが出ても全dfの処理を行う
⇒ try-exceptを使用
– エラーはログに出力する。INFOログもの残す
⇒ loggingモジュールのlogging.exceptionを使用。ログレベルをINFOにする。
– ログ名には、上書きされないようにタイムスタンプを付与したい
⇒ datetimeを使用して付与したファイル名をlogging.basicConfigで設定
– エラー処理で終了しても、正常処理時と同様の処理を行いたい
⇒ finallyを使用# 試しに作成したコード
~~~python3
import logging
import pandas as pd
import matplotlib.pyplot as
Anacondaの仮想環境にTensorflowを入れられなかった話
# 問題提起
機械学習の勉強のためにAnacondaにTensorflow用の仮想環境を作ろうとしたらTensorflowをインストールできなかった。# 実行環境とエラー文
pythonのバージョンは`3.13.0`。
叩いたコマンドは以下の通り。
“`bash
conda install tensorflow
“`
すると以下のようなエラーが発生した。
“`bash
Channels:
– defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: – warning libmamba Added empty dependency for problem type SOLVER_RULE_UPDATE
failedLibMambaUnsatisfiableError: Encountered problems while solving:
– nothing provides bleach 1.5.0 needed by te
Aruba AP の BSSID を取得
# Aruba の BSSID を取得するスクリプト
台数が多いと確認が大変なのでスクリプトにしてみた。
python は使ったことがないので動けば正義です。netmiko って何も考えなくて使えるの素晴らしいですね。
“`python:aruba-bssid
#!/usr/bin/python3from netmiko import ConnectHandler
import redef get_bssid(host, user, passwd):
aruba_ap = {
“device_type”: “aruba_os”,
“host”: host,
“username”: user,
“password”: passwd,
}with ConnectHandler(**aruba_ap) as net_connect:
# print(f’//// {host} に接続しました ////’)
# print(net_connect.find_prompt())output = net
playwright メモ
## 公式
https://playwright.dev/python/## playwrightのよい点
– webdriverが不要
– ブラウザとドライバのバージョン違いに煩わされない
– 基本的には明示的なwaitを入れる必要がない
– ただし、ページや処理によっては必要となるときもある
– コード自動生成機能がある
– そのままでは使えないことが多いが、コード書き始めのとっかかりに使えることもあるhttps://playwright.dev/python/docs/codegen-intro#running-codegen
– python対話モードでweb操作ができる
– こまごまと操作の確認ができるhttps://playwright.dev/python/docs/library#interactive-mode-repl
## playwrightのびみょうな点
– seleniumに比べると情報が少ない
– ただし、公式ドキュメントを見ればたいていのことは何とかなる## PCにインストール済みのブラウザを使
[初心者向け]VSCodeにRuffを設定する
## 対象読者
– Python中級者未満
– リンター・フォーマッターに興味があるけどまだ設定していない人## Ruffって何?
RuffはPython用の静的コード解析ツール(リンター兼フォーマッタ)です。
リンターは、構文エラーなど静的に解析できる範囲でエラーを事前に見つけてくれます。
フォーマッタは、インデントの統一、空白や改行の整理などを行ってくれます。
初心者の方は、とりあえず設定しておけばなんだかいい感じに調整したり、警告出してくれるってことです。Pythonにはたくさんの静的コード解析ツールがありますが、Ruffは2022年にリリースされた比較的新しいものです。
Rustで書かれているので高速に動作し、これまでの主要なPythonの静的コード解析ツールのルールを内包しているので、古い設定の人はRuffに更新してもいいかもしれません。私も今回Ruffに変更するまでは、Flake8やautopep8などを設定していました。
これらを包括してかつ高速ってことらしいので、私はRuffに統一してしまいました。Ruffの公式サイト
https://docs.a
1. Pythonでのブラウザ制御のマスター:AIブラウザエージェントを構築する方法
![AI Agent.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3916556/d7767e91-6353-2d7a-cecf-f9d5fa059714.jpeg)
Pythonは、シンプルで強力なプログラミング言語で、様々な用途に使われています。その中でも、ブラウザの自動制御は、ウェブ開発者や自動化エンジニアにとって非常に便利な機能の1つです。この記事では、Pythonを使ってAIエージェントを構築し、ブラウザを自動制御する方法について説明します。
Pythonでのブラウザ制御
Pythonでブラウザを制御するための一般的なライブラリとして、SeleniumやPlaywrightがあります。これらは、ブラウザ操作の自動化に非常に便利で、ウェブページの操作やデータの収集などを効率的に行うことができます。from selenium import webdriver
driver = webdriver.Chrome()
# Googleを開く
driver.get(“https://www
pythonでエクセル操作をChatGPTに聞いてみた(罫線、スタイル)
エクセルの操作で、
指定した範囲の「外側」に罫線を設定したかったので
色々調べながら自力でやろうとしましたが挫折。。。ChatGPTに作ってもらいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638856/2cf7f7e5-c875-f14f-f136-1b8654a7f732.png)ただ下記の質問をするまでにopenxlsxに関する質問を色々していたので
まっさらな状態からこれだけでちゃんとした答えは返ってこないかも?
“`ChatGPT.質問
X,YからN行M列の範囲に枠線を設定する関数。
ただし
X行のtop
X+N行のbottom
Y列のleft
Y+M列のreght
を設定
複数条件当てはまるセルは線を追加
また、線のスタイル、色も指定できるように
“`ついでに一律スタイル操作についても聞いた
“`ChatGPT.質問
指定した範囲の枠線(上下左右は同じ条件)、塗りつぶし、フォント色、太字を設定する関数
“`最終的にこっちでまとめたものが
uvで始めるPythonプロジェクト管理
## 想定読者
– モダンなPythonのプロジェクト管理に興味がある人
– 中級者未満## はじめに
先日Pythonのプロジェクト管理ツールであるRyeの導入記事を書きました。
https://qiita.com/The_Past_of_Dice/items/418c1d205dd7463503bd
似たようなPythonプロジェクト管理ツールで、さらに高速と言われているuvというものがあるらしいので、今回はこちらを試してみようと思います。
下記が公式サイトなので、詳細は公式サイトを見てください。上級者の方は、公式サイトを読んで頂いた方が良いと思います。
https://docs.astral.sh/uv/
## 環境
MacBookPro
Apple M3 Max
macOS Sequoia15.0.1## uvのインストール
uvのインストールは公式サイトに載っていますが、インストール方法がいくつかあります。
公式で推奨されている方法です。基本的には下記コマンドを使っておけば大丈夫です。
“`bash
curl -LsSf https://as
PythonのUnboundLocalErrorが発生する原因を理解する
# 概要
グローバル変数を使っていたところ`UnboundLocalError`が発生しました。
ドキュメントにも書いてあることなのですが、改めて簡単にPythonのスコープを検証してみます。# 環境
Python3.12
# UnboundLocalErrorが発生するコードとハマった原因
“`Python
val = 0
def f():
val += 1 # UnboundLocalErrorになる
print(f”f scope: val = {val}”)f()
“`これをそのまま実行すると`UnboundLocalError: cannot access local variable ‘val’ where it is not associated with a value`のようにエラーとなります。
このコードを書いたときの思考としては
1. `val = 0`はグローバルで宣言している
1. 関数内でも`val`は使える
1. なら`val`の値も更新できるでした。
特に最後の`val`の値を更新できるという
【Python】eval関数の使い方とリスク、第二引数・第三引数を活用した制限方法
# 概要
文字列を式として認識してくれる`eval`関数を使ってみたので紹介します。# サンプルコード
`eval`関数は、文字列として渡されたPython式を評価し、その結果を返す関数。
以下公式ドキュメント。https://docs.python.org/ja/3.6/library/functions.html#eval
以下、作成したサンプルコードです。
“`py
expression = “1 + 2 * 3″
eval_result = eval(expression)
print(f”Expression: {expression}, Eval_Result: {eval_result}”)
# Expression: 1 + 2 * 3, Eval_Result: 7
“`上記の通り、`Expression`の方では単なる文字列として出力されていますが、`Eval_Result`では文字列が式として評価されています。
ただし、こちら検索するとすぐに「脆弱性」「リスク」と言うワードが目に入ります。
と言うのも、計算式だけではなく、コマンドも実行できて
Python ライブラリとかimportの話 その2(自分用)
前回に続いて、importやライブラリについて応用編を書いてみる。
目次
1. fromとは
2. ライブラリ?関数?クラス?(ここが理解できたら面白くなる!)
3. まとめ1.fromとは
–
前回importについて記述したが、他にもfromという構文があり、最初は意味がわからなかった。
“`python:example.py
from datetime import date
“`
これを日本語で言うと、「datetimeというライブラリから、dateっていう機能だけを装備する」みたいな意味となる。2.ライブラリ?関数?クラス?
(ここが理解できたら面白くなる!)
–
2.1:構造を図示して確認する
“`
datetime ← from
|
├── class date ← import
├── class time
├── class tzinfo
“`
2.2:使い方をまとめてみる
“`python:クラスをインポート
from datetime import date
today = date.today() # date クラスを使用
print(
Python ライブラリとかimportの話 その1(自分用)
Python始めたての頃、ライブラリやimportの意味がよくわからなかったので、あの時の自分のために書き残しておく
1.importとは
–
スクリプトの冒頭によく出てくる呪文のことである
“`python:example.py
import numpy as np
“`
これはnumpyというライブラリをnpという名前で使いますみたいな意味である。2.まとめ
–
ライブラリ:便利機能集(numpyは計算に特化した便利機能集である)
import:ライブラリを装備するイメージ(使える状態にする)
as:当該スクリプト(example.py)の中においては、np = numpy と解釈してプログラムを進めて欲しいというお願いと合意の証次回はimportの応用編みたいなものを書くことにする。
【Python】ざっくり見てわかるデコレータの作り方と使い方
## デコレータとは(ざっくり)
これです
`@` がついている子のことをデコレータといいます
デコレーション(装飾)してくれる子です
別名ラッパーと言ったり言わなかったりします
(今回,呼び名自体はなんだっていいので真偽は割愛です)
“`Python
@handmade_decorator
def just_func(just_hensu):
print(just_hensu)
“`## 何ができるの?
関数の前後に他の処理を入れることができます![やりたいこと.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294646/0daa2436-c168-ea13-af47-b652ddeeceb4.png)
## どう嬉しいの?
共通の処理を簡潔に適用できます
例えばこんな感じです– どの関数も 5 回はリトライするようにしたい
– 関数実行後に共通したログを出力したい
– 関数実行前に共通のチェックを入れたいこのようなお悩みを,
関数定義の前に `@` を書いてあげるだけで
pythonでプロセス全体をpingでモニタリングするサンプル
# 特定のホストを再起動させ、プロセス全体をpingでモニタリングするサンプル
“`
import subprocess
import time
import threading
from datetime import datetimedef ping_host(host):
“””
指定されたホストに対して単一のpingを実行する。Args:
host (str): pingを実行するホストのアドレスReturns:
tuple: (bool, float) pingが成功したかどうかと応答時間
“””
try:
start_time = time.time()
result = subprocess.run([“ping”, “-c”, “1”, host],
stdout=subprocess.PIPE,
Python文法~初級から中級~
# 目次
[はじめに](#はじめに)
[コメント文](#コメント文)
[Pythonの型](#Pythonの型)
[数値計算](#数値計算)
[論理演算子](#論理演算子)
[比較演算子](#比較演算子)
[リスト](#リスト)
[タプル](#タプル)
[辞書](#辞書)
[集合](#集合)
[for文](#for文)
[if文](#if文)
[while文](#while文)
[enumerate関数](#enumerate関数)
[zip関数](#zip関数)
[関数](#関数)
[ジェネレーター](#ジェネレーター)
[内包表記](#内包表記)
[ラムダ](#ラムダ)
[クロージャー](#クロージャー)
[デコレーター](#デコレーター)
[例外処理](#例外処理)
[おわりに](#おわりに)# はじめに
ここでは、Pythonで使用される基本的なデータ構造や文法について説明します。ここでは実際にコードを入力した後の出力結果まで記載しますがもしご自身で結果を確認したい場合はGooogleCol
【ROS2 colcon buildトラブルシューティング】AttributeError: module ‘importlib_metadata’ has no attribute ‘EntryPoints’の対処方法
# はじめに
CIで実施していたROS2のcolcon buildにエラーが出るようになったため対策を紹介する。# 動作確認環境
* Ubuntu 20.04 x64
* ROS2 Foxy# エラー原因
importlib_metadataに“`EntryPoints“`が含まれていないのが原因。
“`bash
AttributeError: module ‘importlib_metadata’ has no attribute ‘EntryPoints’
“`setuptoolsのバージョンが上がったため、構成が変更されたため。詳細は下記参照。
https://github.com/pypa/setuptools/issues/4490
# 対策
エラーが発生しないsetuptoolsにダウングレードする。CIを利用している場合は、最初にダウングレードしておく。ver 68.2.2では問題なく動作したので以下のコマンドを実行してダウングレードする。
“`bash
pip install ‘setuptools<=68.2.2' ```
pythonでエクセル、パワポ、メモ
ChatGPTに聞きながらまた色々サンプル作成
●複数のcsvをxlsxにまとめるサンプル
●pptxを読み込んで適当にダンプ
●pptx作成サンプル●複数のcsvをxlsxにまとめるサンプル
“`python:test_openpyex_csv2xlsx.py
import glob
import csv
from openpyxl import Workbook
from openpyxl.styles import Border, Side
import math
# 新しいWorkbookを作成
wb = Workbook()# 罫線のスタイルを定義
thin_border = Border(left=Side(style=’thin’),
right=Side(style=’thin’),
top=Side(style=’thin’),
bottom=Side(style=’thin’))# CSVファイルのパスを取得
csv_file