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

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

Pythonでディレクトリを(存在するかどうか確かめて存在しなかったら)作成する

# 1. はじめに
ディレクトリの作成方法やチェック方法をよく忘れるので、自分の備忘録的に残しておきます。
僕と同じようにすぐ忘れちゃう系エンジニアや駆け出しエンジニアのお役に立てればと思い、しれっと初投稿。

ちなみに「あと10秒しか調べる時間がない…!」という危機に直面中の人は「[まとめ](#5-まとめ)」に飛んでください。

自分の動作環境は簡便ですがこんな感じです。
バージョン:Python 3.9.1
OS:Windows 10

# 2. ディレクトリ作成
ディレクトリを作成する関数を調べると以下の2つが出てきました。
“`python
import os

os.mkdir([ディレクトリパス]) # 1つめ
os.makedirs([ディレクトリパス]) # 2つめ
“`
ただし、1つ目の`os.mkdir`は、「…../存在しないディレクトリ/存在しないディレクトリ」のように深い階層で存在しないディレクトリ群を作ることができないようなので、基本的には2つ目の`os.makedirs`を使っていくのがよさそうです。

よって今回は`os.makedirs`

元記事を表示

「新・明解Pythonで学ぶアルゴリズムとデータ構造」で勉強日記#19

【出典】[「新・明解Pythonで学ぶアルゴリズムとデータ構造」](https://www.amazon.co.jp/%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0-%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%9F%B4%E7%94%B0%E6%9C%9B%E6%B4%8B/dp/4815603197/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1BG3JS7CKMZA0&keywords=Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%

元記事を表示

[Python実践]argparseに挑戦してみよう!《add_subparsers編》

# はじめに

今回はPythonの「argparse」の基礎と「ArgumentParser」の使い方について解説していこうと思います!

第1弾はこちら!

https://chaldene.net/argparse-argumentparser

第2弾はこちら!

https://chaldene.net/argparse-addargument

「argparse」はコマンドライン引数を渡してくれるもので、Pythonエンジニアを目指している方は知っておいた方が良いものになります。

ぜひこの記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

「argparse使ってみたい」

「コマンドライン引数を渡してみたい」

「argparseって何?」

「自作モジュール作ってみたい」

「他の人が書いたコードでargparseの部分がわからない」

このような人のお役に立てれば幸いです。

それでは早速本

元記事を表示

[Python実践]argparseに挑戦してみよう!《add_argument編》

# はじめに

今回はPythonの「argparse」の基礎と「add_argument」の使い方について解説していこうと思います!

第1弾はこちら!

https://chaldene.net/argparse-argumentparser

第3弾はこちら!

https://chaldene.net/argparse-parseargs

「argparse」はコマンドライン引数を渡してくれるもので、Pythonエンジニアを目指している方は知っておいた方が良いものになります。

ぜひこの記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

「argparse使ってみたい」

「コマンドライン引数を渡してみたい」

「argparseって何?」

「自作モジュール作ってみたい」

「他の人が書いたコードでargparseの部分がわからない」

このような人のお役に立てれば幸いです。

それでは早速本題に入

元記事を表示

[Python実践]argparseに挑戦!《ArgumentParser編》

# はじめに

今回はPythonの「argparse」の基礎と「ArgumentParser」の使い方について解説していこうと思います!

第1弾はこちら!

https://chaldene.net/argparse-addargument

第3弾はこちら!

https://chaldene.net/argparse-parseargs

「argparse」コマンドライン引数を渡してくれるもので、Pythonエンジニアを目指している方は知っておいた方が良いものになります。

ぜひこの記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

「argparse使ってみたい」

「コマンドライン引数を渡してみたい」

「argparseって何?」

「自作モジュール作ってみたい」

このような人のお役に立てれば幸いです。

それでは早速本題に入っていきましょう!

https://chaldene.net/pyt

元記事を表示

プログラミング言語じゃなくて、プログラミングの基礎を学びたい

# 教科書のプログラムを丸写ししていませんか?

![HeneShort_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2538420/f9b1797d-ec84-81e3-e66e-f7ffa97dc80f.png)

![HeneShort_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2538420/445c60b7-5a48-27b5-cd79-4856f46a0916.png)

元記事を表示

[py2rb] 多重継承の6

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# 多重継承 (Python)
https://qiita.com/superrino130/items/a62568fe730f6ae04c09

前回の記事のコメントにて、@Nabetani さんより`Ruby3.1`ではクラス変数のオーバーライドがエラーになることを教えていただきました。

また、クラス変数について興味深い記事を投稿されています。

https://qiita.com/Nabetani/items/bbd7fc95a9f006ab9136
# 失敗(Ruby)
“`ruby
module Base
def __init__
@name = ‘Base’
@base = ‘Base’
puts ‘Base’
end
end

module C4
include Base
def __init__
@name = ‘C4’
puts ‘C4’
super
end
end

module C2

元記事を表示

Python リストやタプルを複数の範囲で指定したい!

# はじめに
テストでassertでexpectedとresultを比較するときに、resultに動的な値があるためテストしづらかったので、静的な値のみを取り出すために考えた

(静,静,静,静,静,静,静,静,静)
(静,静,静,静,動,静,静,静,静,静)

“`python
import itertools
import copy

# 5番目以外の要素がほしい
ls = [0,1,2,3,4,5,6,7,8,9,10]

genr = itertools.chain(range(0,5),range(6,11))

# ジェネレータの中身
print(list(copy.deepcopy(genr)))

# 取得結果
print([ls[i] for i in itr])
“`
“`
[0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
“`

# 感想

うわっ、静、連続して書いたら気持ち悪くなった
静って字、こんなに難しい字だった?

元記事を表示

Pyodideを使ってnwdiag(blockdiag)をクライアントサイドで動かす

# Pyodide
ブラウザ上でPythonを動かすという試みには[PyPy.js](https://github.com/pypyjs/pypyjs “PyPy.js”)や[Brython](https://github.com/brython-dev/brython “Brython”)といったものが以前からある。[Pyodide](https://github.com/pyodide/pyodide “Pyodide”)は後発ではあるもののpipの簡易実装であるmicropipが用意されていて、[PyPI](https://pypi.org/ “PyPI”)上のパッケージを(ものによっては)直接インストールできるところが画期的。

# nwdiag
[nwdiag](https://github.com/blockdiag/nwdiag “nwdiag”)(や[blockdiag](https://github.com/blockdiag/blockdiag “blockdiag”))は、[PlantUML](https://github.com/plantuml/plantum

元記事を表示

【Python】DockerでOpenCVをインストールする時の設定

# はじまり

DockerでPython用のコンテナをビルドする時に
OpenCVも一緒にインストールしたら躓いたので、備忘録。

# 最初に躓いたイメージ

まず、このイメージでビルドししてopencvを利用しているプログラムを実行しました。

“`Dockerfile
FROM ubuntu:latest

ENV PYTHON_VERSION 3.7.1
ENV HOME /root
ENV PYTHON_ROOT $HOME/local/python-$PYTHON_VERSION
ENV PATH $PYTHON_ROOT/bin:$PATH
ENV PYENV_ROOT $HOME/.pyenv

RUN apt update

RUN apt install -y python3 python3-pip
RUN pip install –upgrade pip

WORKDIR /usr/src/app
COPY ./ /usr/src/app

RUN pip install opencv-python
“`

そうしたら、こんなエラーが出現。

“`shel

元記事を表示

Tkinterで画像ビューワを作る 第3回

Tkinterで画像ビューワを作る 続き

[前々回](https://qiita.com/kuwabatake/items/b5b98b78cc1ba3ed4623)、[前回](https://qiita.com/kuwabatake/items/cc1fe15f67269258cd01)作成した画像ビューワを更に改良していきます
今回は
– 全画面表示
– ファイルの削除

の二つをやっていきます

## 全画面表示
アプリケーションを全画面表示にします
windowsではroot.attributesで’-fullscreen’,Ubuntuでは’-zoomed’で更新できます

“`python:Windows全画面
root.attributes(‘-fullscreen’, False)
“`

“`python:Ubuntu全画面
root.attributes(‘-zoomed’, True)
“`

windowsしか持っていないので、以後windowsのみ説明します
attributes(‘-fullscreen’)は二番目の引数なしで呼ぶと現在の状態が取得

元記事を表示

AWS Lambda Layersを使ったPythonライブラリーの追加

# はじめに

Lambda関数でサードパーティのライブラリーを使用したいときは、下記のいずれかの方法を使って、対象のライブラリーを追加する必要がある。
– 追加したいライブラリーを含んだパッケージデプロイ
– Lambda Layersを使って追加

今回は「**Lambda Layersを使って追加**」についてまとめていく。

# Lambda Layersを使った追加方法
## 環境
– Windows / Mac
– Dockerが使えること。
– ここではDockerのインストール方法は省略するが、ローカルの場合はDocker Desktopを使うと簡単。
– Linuxサーバー等にインストールする場合は下記記事記事を参照。
– https://qiita.com/subretu/items/549bc720165004bca3c3
## やってみて分かったこと
– Layerにアップロードするライブラリーは、AmazonLinux環境で作成しないと読み取ってくれないことが分かった。
– WindowsやMacのローカル環境で、pip

元記事を表示

クラス変数の持ち主

# これは何?

クラス変数の持ち主が、 python と ruby で違うことに気がついたので、他の言語どうなってるんだろと思って調査したのでその記録。ジェネリクスとテンプレートを交えながら。

# ruby の場合

“`ruby:ruby
class B
def set_v(x); @@v=x; end
def v(); @@v; end
end

class C < B;end class D < B;end c = C.new.set_v("C#set_v") d = D.new.set_v("D#set_v") p [ C.new.v, D.new.v ] #=> [“D#set_v”, “D#set_v”]
“`

クラス変数 `@@v` の持ち主は、 `class B` 。

`C` 経由で変更しても、 `D` から見た `@@v` の値が変わる。

# Python3 の場合

“`python:python3
class B:
v = “in-class-def”
@classmethod
def setV(cls,

元記事を表示

「ありそうでない言葉」をたくさん作る【RNN】

## 導入
世の中には、なんとなく「ありそう」な響きだけれど実際には「ない」言葉が存在します。

例えば飲み会の山手線ゲーム、あるいは制約付きのしりとり勝負でも思い浮かべてください。時間に追われ、ぽろっと誰かが溢した一言に、一瞬「よく絞り出したな」と見逃し、ややあってから「冷静に考えるとそんな言葉なくないか?」と咎めるような場面があります。このときその人は、他ならぬ「ありそうでない言葉」を発したのだと考えられます。

では何がその言葉を「ありそう」たらしめているのかというと、それはおそらく「言葉の発音のしやすさ」、敢えて抽象的な表現に言い換えるのなら「言葉の響き」だと言えるのではないでしょうか。「まいせんかん」はどことなくありそうな雰囲気を醸していますが、「ぺりいしみび」はきっとないことでしょう。裏を返せば、その言葉が実在するかどうかは、単語の「響き」のみによってある程度判断がつく、ということになります。

そこで本記事では、単語の響きだけで言葉の実在・非実在を識別する機械学習モデルを考えます。まず「実在する単語」および「ランダムに生成した実在しない単語」に

元記事を表示

練馬区の区内感染者数累計データ詳細のPDFをCSV変換

pdfplumberだと変換に4分ぐらいかかるが、pdftotextだと数秒で完了

# pdfplumber
“`python
import pathlib
import re
from urllib.parse import urljoin

import pandas as pd
import pdfplumber
import requests
from bs4 import BeautifulSoup

headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”
}

def fetch_soup(url, parser=”html.parser”):

r = requests.get(url, headers=headers)
r.raise_for_status()

soup = BeautifulSoup(r.content, parser)

return soup

def fet

元記事を表示

[Python] Elasticsearchを用いた位置情報検索

# はじめに
Elasticsearchは緯度経度を用いた位置情報検索ができます。
今回は山手線の緯度経度データをElasticsearchに投入し、位置情報を用いた範囲検索を実装してみます。
# インデックスの作成
– 今回は山手線の駅名と緯度経度情報を持つデータを投入します。
– geo_pointタイプはdynamic mappingされず、事前に定義する必要があるので注意です。

“`python
from elasticsearch import Elasticsearch

# Elasticsearchインスタンスの作成
es = Elasticsearch(
“elasticsearchのURL”,
http_auth=(“user_id”, “password”)
)

# マッピング定義
mapping = {
“mappings”: {
“properties”: {
“name”: {
“type”: “text”
},

元記事を表示

DQNを使用したfx取引のコードの説明

# 本記事について
https://github.com/komo135/forex-trading

上記のリポジトリのDQNエージェントのコードの一部を解説します。

forex-tradingのDQNエージェントは以下に沿って行動します。

# 1 データの読み込み
事前に保存したデータを読み込みデータの9割をトレインデータに1割をテストデータにします。
“`python
self.x = np.load(“data/x.npy”)

y = np.load(“data/target.npy”)
self.low = y[:, :, 2].reshape((self.x.shape[0], -1))
self.high = y[:, :, 1].reshape((self.x.shape[0], -1))
self.y = y[:, :, 0].reshape((self.x.shape[0], -1))

self.atr = np.load(“data/atr.npy”).reshape((self.x.shape[0], -1)).astype(np.int32)

se

元記事を表示

事業企画1年目のpython学習4日目

# 本記事について
とある事業会社で事業企画をやっています。
元々は、新規営業1年→エンプラ営業3年やっていました。
事業企画への異動に伴って、ルーチンワークの自動化やスクレイピングに興味を持ちpython学習をスタートしました。
目的達成までは記事を執筆予定です。どうぞよろしくお願いいたします。

# 開発環境
jupyterlab

# 使っている本
すっきりわかるpython入門
https://sukkiri.jp/books/sukkiri_python

# 勉強計画
週5日間ミニマム1h勉強する。
最初の1weekは1冊終わらせることをgoalに。
start@ 2022/2/21

# 学習時間
1.0h

# 学び
今日は繰り返しを学びたいと思います〜

### 繰り返しの基本構造(まずはwhileから)

羊が増えていく。
“`py
print(“let’s sleep”)
count = 0
count += 1
print ( ‘sheep is {}’.format(count))
count += 1
print ( ‘sheep is {}’.fo

元記事を表示

Pythonによる関数の使い方

# はじめに
始めまして、株式会社ジール所属の@hirokai_yoshidaです。
普段はAWSやPythonを使った開発を行っています。
開発に携わるにあたり、現場で学んだ事をアウトプットしていこうと思います。

今回はPythonの関数の説明と業務での使われ方について書いています。
Pythonを扱う上で必須の知識なので、なるべくわかりやすく説明していきます。

# 実行環境について
今回説明で利用するコードは、そのまま張り付けても動くように事前動作確認を行っています。
実際にコードを実行してみたい方には、Google Colaboratoryというサービスがお勧めです。
GoogleアカウントさえあればPythonを実行できるサービスになります。
今回のコードに限らずPythonの学習を始めようと思っている方にはピッタリのサービスです。
興味のある方は下記リンクよりアクセスしてみてください。

https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

# 関数とは
入力値に対して処理を行い結果を返す一連の処

元記事を表示

Python itertoolsつかって多次元リストを1次元リストにしてリスト内包表記でforループさせたらリストが消えた!?

itertoolsでchainして生成されるのはリストではなくて、**itertools.chainクラス**。こいつは**ジェネレータ**だから、forで最後までループさせると空になるまでnext()しちゃうって訳さ!

以下で動作確認をしてみるね!

“`python
import copy
import itertools

ls = [[1,2,3],[4,5,6]]

genr = itertools.chain.from_iterable(ls)

print(type(genr))

# 1が取り出される
print(next(genr))
# 2が取り出される
print(next(genr))

# この時点の要素
print(list(copy.deepcopy(genr)))
# ここでコピーせず、そのままprintすると
# 全要素がnext()されてしまうので注意
# print(list(copy.deepcopy(genr)))
# genr = [] になってしまう

# 奇数を取り出す例
pick_out_odd =[n for n in genr

元記事を表示

OTHERカテゴリの最新記事