- 1. AOJトライに関する知識知見の記録共有:Volume0-0064
- 2. Python3: Paramiko の使い方 (ssh 接続)
- 3. Pythonで対話式CLIツールを作る
- 4. Pandasのgroupbyで日付の順序がおかしくなる問題を解決する。
- 5. pipとは〜スクレイピングでライブラリインストール際に登場し疑問だったので調べてみました〜
- 6. 【Python3】abcモジュールで抽象クラスを実装する
- 7. 社内Windows環境で VS CODEのPythonが実行できなくて困った話。
- 8. MacでTkinterを使ったGUI作成時の注意事項
- 9. Pythonで日本の新型コロナ患者情報取得
- 10. VSCodeでコードユニペット(Python)を登録する – 備忘録
- 11. asyncio アプリ内から Slack にメッセージを投稿しよう
- 12. 【Python、Ruby】約数と総和
- 13. フォームを作ったつもりなのにUnknown field(s) (yyy) specified for XXXが出てしまった時の対処法
- 14. pkを設定しているはずなのに何故かAttributeError at /XXX//が出てしまう時の対処法
- 15. AtCoder Beginners Selection 11問をpythonで解いてみた
- 16. 代理店長私のPythonでRPA作ってみた。
- 17. ファイルツリーを走査する際に特定のディレクトリの配下は無視したい
- 18. 【Plotly】PythonのPlotlyで時系列データを可視化する
- 19. kivyMD開発其の壱 初期公開説明弐篇
- 20. discord.pyで元の型のままコマンド引数を受け取る方法
AOJトライに関する知識知見の記録共有:Volume0-0064
# タスク概要
Secret Number
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0064
# コード実装例
TIPS1. 例外処理含む評価パターンを追加
“`Python
import pprint, sys, time, redef core(arg, adv=True):
if adv:
s = “”
for ch in arg:
if ch.isdigit():
s = s + ch
else:
s = s + ” ”
else:
s = re.sub(r'[^0-9]’, ‘ ‘, arg)l = [int(v) for v in s.split(” “) if v != “”]
return [sum(l), l]def app(*args):
ret = []
Python3: Paramiko の使い方 (ssh 接続)
Python で ssh 接続をする方法です。
“`py:ssh_exec.py
#! /usr/bin/python
#
# ssh_exec.py
#
# Jan/20/2022
# ——————————————————————
import os
import sys
import paramiko
from dotenv import load_dotenv
# ——————————————————————
dotenv_path = ‘.env’
load_dotenv(dotenv_path)
HOST = os.environ.get(“HOST”)
USER = os.environ.get(“USER”)
COMMAND = os.environ.get(“COMMAND”)
#
sys.stderr.write(“*** start ***\n”)
client = paramik
Pythonで対話式CLIツールを作る
PythonでこんなCLIツールが実装できる
![questionary.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154711/039f6dc1-7099-86a4-9c01-5ccf14af764b.gif)上記のスクリプトはこちら
(`questionary==1.10.0`を使用)“`python
import questionaryname = questionary.text(‘Name?’).ask()
age = int(questionary.text(‘Age?’).ask())
sex = questionary.select(
‘Sex?’,
choices=[“Male”, “Female”]
).ask()
if sex == “Male”:
print(f”Hello {name}! {age} years old gentleman!”)
else:
print(f”Hello {name}! {age} years ol
Pandasのgroupbyで日付の順序がおかしくなる問題を解決する。
#結論
作成したDataFrameの日付のフォーマットや型に問題がある!
**→ 日付のフォーマットは、1/1は01/01の様に記述するなど統一されているか?**
**→ 日付のデータの型は、to_datetime関数を使うなどして日付の型になっているか?**#DataFrameを作成し、groupbyのsumで日付別の合計値を求める。(ダメな例)
下記の様な日付ごとに果物をいくつ買ったかというDataFrameがあるとする。
“`python:
import pandas as pddf = pd.DataFrame({‘Date’: [‘2022/9/1’, ‘2022/9/1’, ‘2022/9/12’, ‘2022/9/12′,’2022/10/20’, ‘2022/10/20’, ‘2022/11/27’, ‘2022/12/31’],
‘Fruit’: [‘Apple’, ‘Banana’, ‘Apple’, ‘Orange’, ‘Grape’, ‘Apple’, ‘Grape’, ‘Orange’],
pipとは〜スクレイピングでライブラリインストール際に登場し疑問だったので調べてみました〜
# はじめに
昨年の年度末ごろからpythonの学習を始め、
その中スクレイピングで使用する際や仮想環境構築する際に出てきた「pip」忘れないようにメモベースでまとめています。
詳細は参考URLを見てください!参考URL
https://prograshi.com/language/python/python-pip/
#pipとは
>URLより引用
>pipとはpython公式のパッケージ管理システムです。
インストールしたpythonの中に入っています。
Pip Installs Packages(またはPython)の略です。ピップと読みます。
pythonに公式に登録されたパッケージのインストールやアンインストールが出来ます。
<補足>
pythonのパッケージはPyPIで管理されています。
└ Python Package Indexの略
└ 呼び名:パイパイ
└ 公式ページ:https://pypi.org/
コマンドでPyPIにアクセスし、ファイルをインストールしたりするのがpipです。イメージとしてはLinuxでいうrpmコマンドみたいな感じ
【Python3】abcモジュールで抽象クラスを実装する
## はじめに
Pythonの標準モジュールである“`abc“`(abstract base class)を使うと抽象クラスを利用することができます。
## 環境
– Ubuntu20.04
– Python3.8.10## 使い方
### 抽象クラスを定義
“`python:animal.py
# 1. モジュールをインポート
from abc import ABC, abstractmethod# 2. ABCクラスを継承
class Animal(ABC):# 3. デコレータで抽象メソッドであることを宣言
@abstractmethod
def cry(self):
pass
“`まずは冒頭でabcモジュールからABCクラス・abstractmethodデコレータをインポートします。
クラスの定義時にABCクラスを継承することで抽象クラスとして定義できます。
“`
class Animal(ABC):
“`以下のような書き方も可能です。
“`
class Animal(metac
社内Windows環境で VS CODEのPythonが実行できなくて困った話。
# 社内環境のWindows版 VS CODEでPythonが実行できない
そういう時には以下を実行してみると幸せになれるかもしれません。
## 問題となる症状
対象となるエラーメッセージはこれ↓
:::note alert
ターミナル プロセスが起動に失敗しました: A native exception occurred during launch (Cannot launch conpty)
:::## 解決策
1. ファイル」の「ユーザー設定」の「設定」を開いてください。
2. 上の検索部分に[conpty]と入力して検索の実行
3. 表示されている `Terminal > Integrated: Windows Enable Conpty` のチェックボックスをオフしてください。## 解説
社内Windows環境では、時にWindowsのバージョンを固定していることがあります。
上記の設定は、疑似コンソールにConptyと使用するか、Winpty(conptyの旧バージョンだと思えば、当たらずとも遠からず)を使用するかの選択をする設定部分です。もし
MacでTkinterを使ったGUI作成時の注意事項
#環境
– MacOS 12.1
– Python 3.10.0#TkinterでGUI作るぞ!!!
エラーは出ないのにGUIの画面真っ黒やん。
ボタンも文字も何も出てこない。。。あかん。 何やっても解決しないぞ、これ
と思って、別のライブラリを使って動かしたところ>You are running a VERY old version of tkinter 8.5.9.
>You cannot use PNG formatted images for example. Please upgrade to 8.6.xえ? バージョン古いの??
#実は気づくタイミングがありました。
直そうとしていた時に
Pythonの対話モードでバージョン確認したんですよ。~~~
>>> tkinter.Tcl().eval(‘info patchlevel’)
‘8.5.9’
~~~
完全に見落としました。 Tcl/tkが入ってて満足してました。
MacOSでTkinter8.5系は表示バグの致命的欠陥があります。#よし!! アップデートするか!!
ターミナルに
Pythonで日本の新型コロナ患者情報取得
#環境
`Win10`
`Python 3.8.10`
・`requests==2.25.1`
・`pandas==1.3.1`#実装
“`py
import requests as rq
import pandas as pdurl = ‘https://covid19-japan-web-api.vercel.app/api/v1/positives?prefecture={0}’
prefectures = [‘北海道’,’青森県’,’岩手県’,’宮城県’,’秋田県’,’山形県’,’福島県’,’茨城県’,’栃木県’,’群馬県’,’埼玉県’,’千葉県’,’東京都’,’神奈川県’,’新潟県’,’富山県’,’石川県’,’福井県’,’山梨県’,’長野県’,’岐阜県’,’静岡県’,’愛知県’,’三重県’,’滋賀県’,’京都府’,’大阪府’,’兵庫県’,’奈良県’,’和歌山県’,’鳥取県’,’島根県’,’岡山県’,’広島県’,’山口県’,’徳島県’,’香川県’,’愛媛県’,’高知県’,’福岡県’,’佐賀県’,’長崎県’,’熊本県’,’大分県’,’宮崎県’,’鹿児島県’,’沖縄県’
VSCodeでコードユニペット(Python)を登録する – 備忘録
#目的
Pythonのプログラムを書く際にお約束の文言を毎回入力するの面倒なので,コードユニペットに登録してしまおうというヤツ
##こんな感じに
『shebang』って打とうとすると...
![スクリーンショット 2022-01-18 16.17.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2430126/c15745e2-306b-91cd-f91e-7105064c9492.png)
予測候補が表示されて
![スクリーンショット 2022-01-18 16.18.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2430126/41be681c-9fa1-ed4e-483e-8a2b358f5d81.png)
シバンが入力される
同様に『main』って打とうとすると...
![スクリーンショット 2022-01-18 16.20.05.png](https://qiita-image-store.s3.ap
asyncio アプリ内から Slack にメッセージを投稿しよう
「[Python で Slack API や Webhook を扱うなら公式 SDK(slack-sdk/slack-bolt)を使おう](https://qiita.com/seratch/items/8f93fd0bf815b0b1d557)」シリーズの記事です。公式 SDK についての概要、他にも記事がリンクされていますので、[こちらのエントリーページ](https://qiita.com/seratch/items/8f93fd0bf815b0b1d557)にもアクセスしてみてください。
## Slack 公式 SDK の asyncio サポート
このページに辿り着いたということは [asyncio](https://docs.python.org/3/library/asyncio.html) を活用してアプリケーション開発をされていますか?
Slack 公式 SDK である [slack-sdk](https://pypi.org/project/slack-sdk/) は [AIOHTTP](https://docs.aiohttp.org/en/stable/c
【Python、Ruby】約数と総和
#はじめに
元々Rubyを中心に、学んでいましたが、Rubyで書く内容を他の言語であればどのように書くのか?とふと思い、Pythonに興味があったため、勉強をしてみようと思いました。
そんな中で、
##### AIZU ONLINE JUDGE
というサイトを知り、ちょうど良いトレーニングになりそうだと思ったので、少しずつ挑戦してみることにしました。
本当は、アプリ等をどんどん作成したほうがトレーニングになるのかなと思いつつ、基礎の部分として損はないだろうと思い、やり始めています。##3-D 約数の数
######3つの整数 a、b、cを読み込み、aからbまでの整数の中に、 cの約数がいくつあるかを求めるプログラムを作成してください。
######Input
a、b、cが1つの空白区切りで1行に与えられます。######Output
約数の数を1行に出力してください。######例
a=1 , b=10 ,c=30のとき、
約数の数は6つ####解答
“`ruby:3-D.rb
# 回数を調べる
a,b,c = gets.split(” “).map(&:to_
フォームを作ったつもりなのにUnknown field(s) (yyy) specified for XXXが出てしまった時の対処法
## 概説
Modelをうまく使えるよう、特定のフィールドをFormコントロールにしようとして`django.core.exceptions.FieldError: Unknown field(s) (yyy) specified for XXX`が出てしまった時は、XXXのフィールドに対して、Formコントロールで扱っているfield名yyyが存在しているか確認し、どちらか一方に合わせると良いです。
## 環境
環境は以下の通りです。
| 名称 | バージョン |
|:-:|:-:|
| macOS | Monterey(12.1) |
|django|4.0.1|
| Python | 3.8.9 |
| brew | 3.3.10 |
| pip | 21.3.1 |
| psycopg2-binary | 2.9.3 |
|PostgreSQL|14.1|## 対処法
`models.py`で定義したフィールド名と、`forms.py`で使っているフィールド名が一致(または存在)しているか確認し、一致(または存在)していない場合は書き換えてFormとM
pkを設定しているはずなのに何故かAttributeError at /XXX/<値>/が出てしまう時の対処法
## 概説
pk(id)は渡っているはずなのになぜか`AttributeError at /XXX/<値>/`が出てしまう時は
views.pyの`pk_url_kwarg`とurls.pyのパス間で整合性が取れていないことが原因です。## 環境
環境は以下の通りです。
| 名称 | バージョン |
|:-:|:-:|
| macOS | Monterey(12.1) |
|django|4.0.1|
| Python | 3.8.9 |
| brew | 3.3.10 |
| pip | 21.3.1 |
| psycopg2-binary | 2.9.3 |
|PostgreSQL|14.1|## 起きている問題
idはきちんと受け渡して、URLは通っているはずなのに開けずエラーとなってしまいます。
`AttributeError at /XXX/<値>/`
例外を確認すると`Generic detail view XXXView must be called with either an object pk or a slug in the URLco
AtCoder Beginners Selection 11問をpythonで解いてみた
AtCoderの初心者向け問題集である [AtCoder Beginners Selection](https://atcoder.jp/contests/abs/tasks) の11問をPythonで解説します。
# [Welcome to AtCoder](https://atcoder.jp/contests/abs/tasks/practice_1)
“`python:PracticeA
a = int(input())
b, c = map(int, input().split())
s = input()
print(a+b+c, s)
“`
【解説】簡単な入力の問題です。入力はinput関数を用いて行います。
aは後に計算するためint関数で囲み、整数値として入力を受け取ります。
b,cは空白区切りで入力されるため、map関数を使用します。第二引数に設定されたinput().split()で空白区切りの文字列を受け取り、第一引数に設定されたint関数で整数値に変換、b,cに設定します。
sは文字列として受け取るので、input関数のみです。表示にはprint関数を使
代理店長私のPythonでRPA作ってみた。
今アルバイトをやっている飲食店で、店長が社員からアルバイトになって、私がお昼を中心に店長の代理的なポジションをやることになった。それに伴い、シフト作成と給料計算の一部を担当することになった。
なんだけど、給料計算の一部というのが、手動でやっていて意外と手間なことに気づいたのである。
というのも、お店でのシフトや打刻の管理は、2つのサイトで行っていて、連携もされていない。。。
手間がかかるなぁと困った代理店長私は、あることを思いついた。ちょうどPythonの勉強をし始めたところだったから、RPAを作って自動化しようじゃないか!と## やりたいこと
はい、ということで実現したいことを説明するとこんな感じだ。#### 実際の打刻が記録されている、データを引っ張りたいページ(以降、甲と呼びます)
![スクリーンショット 2022-01-17 19.55.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2292175/85f8127b-2c6e-ac0f-bc9a-9240036054b1.png)
ファイルツリーを走査する際に特定のディレクトリの配下は無視したい
python3でファイルツリーをトラバースしたい場合、標準ライブラリとしては`os.walk`が用意されているのですが、このAPIは指定したディレクトリの配下すべてを探索してしまうため、「特定の名称のディレクトリの配下は走査しない」というような場合には、`os.walk`を利用せず、自前で実装することになります。
以下は「カレントディレクトリからファイルツリーをトラバースしていって、ファイルが見つかったら何かする、ただし`.git`ディレクトリと`.svn`ディレクトリの配下は走査しない」ということを実装したものになります。
“`py
import pathlibstack = [pathlib.Path(‘./’)]
skips = {‘.git’, ‘.svn’}
while stack:
entry = stack.pop()
if entry.name in skips:
continue
if entry.is_dir():
stack.extend(entry.iterdir())
if entry.
【Plotly】PythonのPlotlyで時系列データを可視化する
##1.初めに
Pythonでデータを可視化する際、matplotlibとseabornが定番だが、表示範囲やスケールを変える際の手間がかかる。
インタラクティブに表示範囲・スケールを変更できる可視化ツールとして、今回Plotlyの使い方を簡単にまとめた。##2.プログラム
“`python:visualize.py
import pandas as pd
import numpy as npdf_passanger = pd.read_csv(“AirportPassengers.csv”, sep=”;”, index_col=0)
print(df_passanger.head())# Using plotly.express
import plotly.express as px#fig = px.line(df_passanger, x=”Month”, y=”Passengers”, title=’Life expectancy in Canada’)
fig = px.line(df_passanger, y=”Passengers”, title=
kivyMD開発其の壱 初期公開説明弐篇
ハロー、Qiita!いかがお過ごしでしょうか。
はい、というわけで今週もKivyMDのお時間となりました。お正月気分は残って
いないでしょうか。投稿者はまんまと残っている限りであります。いやー、もう
1正月を迎えたい(切実)。さて、新年早々のニュースとしては、とある企業が週休3日を考えているという
なんとも羨ましいニュースがありましたが、なんと言ってもこのニュースが話題を
呼んでいるのではないでしょうか。https://www.itmedia.co.jp/news/articles/2201/11/news160.html
多くの方が恩恵を受けている中、ハッと目が覚めるようなニュースでしたね。当然
私も受けていますので、改めて寄付をしようかなとも思った次第ではあります。
だって、KivyMDがなければこの投稿もなかったもの。まぁ、一旦個人の信条などは置いておいて、投稿することによって貢献をしていき
たいと思います(解決には至ってない)。今週はというと、先週に引き続き初期公開
したアプリについて解説をしていきたいと思っております。それではレッツラゴ。## 動き(繰り返
discord.pyで元の型のままコマンド引数を受け取る方法
#環境
“`
discord.py
discord==1.0.1
discord.py==1.7.3
python 3.9
“`
#問題点
discord.pyでは書き込みの引数は基本的に文字列にて受け取ります。
メンションやチャンネルの指定が含まれていたとしても、文字列です。例:
“`python:test.py
# 色々と省略していますが核心部分だけ載せます
from discord.ext import commands
import discordbot = commands.Bot(command_prefix=commands.when_mentioned_or(“-“))
class TestCommand(commands.Cog):
def __init__(self, bot):
super().__init__()
self.bot = bot@commands.command()
async def test(self,ctx,*args):
if args: