Python3関連のことを調べてみた2019年12月31日

Python3関連のことを調べてみた2019年12月31日

subprocess.check_call(‘ls -l’)ではなく、subprocess.check_call(‘ls -l’,shell=True)を指定しないと動かない

#動かない
“`
subprocess.check_call(‘ls -l’)
“`

#動く
“`
subprocess.check_call(‘ls’)
subprocess.check_call(‘ls -l’,shell=True)
“`

どうもコマンドのオプションを指定する際にはshell=Trueにしないと駄目らしい

元記事を表示

Fargateで起動するPythonの定期バッチをAWS-CDKで構築する

# Fargateで起動するPythonの定期バッチをAWS-CDK(Python)で構築する

Lambdaの15分制限を突破するために、Fargateを使用することにした。
CDKのPythonで書かれたサンプルコードをあまり見ないので、備忘録がわりに投稿してみる。

AWS-CDKを触ったことがない方はこちらの[ワークショップ](https://cdkworkshop.com/30-python.html)を一通り終わらせるとイメージが付きやすいと思います。
この記事のソースはGitHubの[こちらのリポジトリ](https://github.com/joe-king-sh/aws-cdk-fargate-batch)にあります。

## 開発環境構築

今回はCloud9で構築したが、CDKとPythonとDockerを入れればMacでもWindowsでも動く、はず。

### AWS CDK
Cloud9には現時点で最初からCDKが入っていないので、事前にインストールすること。

“`bash
$ npm install -g aws-cdk

$ cdk –versio

元記事を表示

Pythonの組み込み関数69個を制覇する 第6回 p~r

Pythonでは、非常に多くの組み込み関数(Built-in Functions)が用意されており、ライブラリをimportせずとも様々な処理を行うことができます。
基本に立ち返って、組み込み関数の使い方を整理して行きたいと思います。

尚、実行例はWindows Subsystem for Linux 2 (WSL2)のUbuntu18.04にインストールしたPython3.7.5で作成しています。

(注意事項)
更新の期間が空いた結果、第4回までの記事とPythonのマイナーバージョンおよび実行環境が異なっていますのでご注意ください。
また、執筆時現在、Python3.8.0がリリースされていますが、本シリーズではPython3.7系での記述を行っていますので、そちらも留意いただければと思います。

[Pythonの組み込み関数69個を制覇する 第1回 a~b](https://qiita.com/ichi_taro3/items/cd71a8e43040abb446a1)
[Pythonの組み込み関数69個を制覇する 第2回 c~d](https://qiita.com/ich

元記事を表示

【GCP】Google Cloud StorageをPythonで操作する

#google-cloud-storageのインストール
“`shell
$ pip install –upgrade google-cloud-storage
“`

#ストレージクライアントの作成
“`python

from google.cloud import storage
client = storage.Client()
“`

#バケットに対する操作
###バケットの作成
“`python
bucket = storage.Bucket(client)
bucket.name = “test-bucket”
bucket.location = “asia-northeast1”
client.create_bucket(bucket)
“`

###バケットの取得
“`python
bucket_name = “test-bucket”
bucket = client.get_bucket(bucket_name)
“`

###バケットの一覧表示
“`python
for bucket in client.list_buckets():

元記事を表示

PythonでSMTP通信してみた

PythonでSMTP通信を実装する機会があったので実装方法を書いておきます。

いろいろと実装方法を調べていると標準ライブラリのレガシーAPIで実装している情報はたくさん出てきたのですが、現在推奨されているAPIでの方法があまり見つかりませんでした。WebフレームワークのDjangoもレガシーAPIを使っていたりして、主要ライブラリやフレームワークのコードも参考にできませんでした。
なので、Pythonの`smtplib`と`email`の標準ライブラリを中心にコードリーディングしながら実装しました。

# 環境
– OS: MacOS Catalina
– Python: 3.7
– Library: smtplib, email (Python standard libraries)

# 実装内容

1. SMTPサーバーとのコネクション確立
2. SMTP Auth
3. メール内容送信
4. 複数宛先への送信時に失敗した宛先をログに出力

# ソースコード

“`python
import smtplib
from email.message import EmailMe

元記事を表示

部分的なOne-Hotエンコーディング

下記のようなDFがあり、CountryカラムのみOne-Hotエンコーディングしたい。

“`
Country | Age
————————–
Germany | 23
Spain | 25
Germany | 24
Italy | 30
“`

scikitlearn version 0.20まではOne-Hotエンコーディングしたいカラムのインデックスを `categorical_features` に指定するだけでよかった。
つまりこんな感じ。

“`python
from sklearn.preprocessing import OneHotEncoder

onehotencoder = OneHotEncoder(categorical_features=[0])
X = onehotencoder.fit_transform(X)
“`
scikitlearn version 0.23からはこのような列ごとに処理が異なるパターンには`C

元記事を表示

PythonでABC100のA~C問題を解く

### 最初に
[tax_free](https://twitter.com/taxfree_python)です。今回から、ABC(AtCoder Beginner Contestの略)をPython3で解いていきたいと思います。モチベーションは、単純にAtCoderが楽しいというのとCまで安定して解けるようになりたいからです。 ~~レートを上げたい~~
現在のレートはスクリーンショット 2019-12-30 19.02.41.png
です。がんばって緑になりたい。モチベーションが続くかぎり記事を書いていきます。

### A問題
[問題](https://atcoder.jp/contests/abc100/tasks/abc100_a)
**考えたこと**
A,Bは入力値
直感的にA,Bのどちらかが9

元記事を表示

Python3でCSVコード変換プログラム

#Python3でCSVコード変換プログラム

[Python3でcsvから対応表を作る](https://qiita.com/code2545Light/items/97cdbaf29c83eb54aee1)
の続き

###考え

データ移行などの作業で
コード変換 新旧の対応表を作って順次置換
って作業あるかと思う。

その関数を作ってみた

###ソースコード
“`csv_code_conv.py
#コード変換

import csv

#指定したCSV(2列限定)を順次読み込み。新旧対応表を作る
def getcsvconv(fname:str)->dict:
with open(fname, encoding=”shift_jis”) as f:
reader = csv.reader(f)
conv_dic = {row[0]:row[1] for row in reader} #リスト内包表記 旧コードをkeyに、新コードをValue
return conv_dic

#指定されたファイル(CSV)の指定位置

元記事を表示

OpenCVで指定ディレクトリの画像を一覧表示する

“`Python
import cv2
import math
import matplotlib.pyplot as plt
%matplotlib inline

# 指定パスのファイルを一括取得
import glob
import re

def show_all_img(img_path, size):
#img_path:画像の格納されたパスを指定

#サイズ
plt.figure(figsize=size)

#拡張子がpng, jpgのファイルを抽出
img_file_names = [p for p in glob.glob(‘{}/**’.format(img_path), recursive=True)
if re.search(‘.*(.png|.jpg)’, p)]

img_dic = {}
for i in img_file_names:
img_dic[i] = cv2.cvtColor(cv2.imread(i), cv2.COLOR_BGR2RGB)

rows = m

元記事を表示

docker(88) pip入門

dockerの素のubuntuにpipを導入する場合

python2 は
Installing with get-pip.py
https://pip.readthedocs.io/en/stable/installing/

という方法をよく用いた。

“`shell-session:docker/ubuntu
# apt update; apt -y upgrade
# apt install python2.7 python3.8 curl vim
# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# python2.7 get-pip.py
# pip install update
# apt install python3-pip
# pip3 install update
“`
python2のpipもapt install python-pip でも入るらしい。

Ubuntuにpip/pip3をインストールする

Ubuntuにpip/pip3をインストールする

元記事を表示

docker(89) dockerでpython2, python3

機械学習でpythonを使うのにanaconda3を利用してきた。

当方の機械学習の演習・ハッカソン等でWindowsでanaconda3を使うのに、うまく使えない人がいたので資料を作成した。

Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

Windows(M.S.) にAnaconda3(python3)を 2019年版
https://qiita.com/kaizen_nagoya/items/c05c0d690fcfd3402534

pythonで 言語処理100本ノック を実行するのには、必ずしもAnacondaである必要はないかもと思った。

docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

素のubuntuからpythonを導入する作業もしてみた。

元記事を表示

プログラムちょい替え(5)pyhon中央値: docker(87)

数学オンチのプログラマが数学を学習し直すらしいです【統計その1】
https://qiita.com/manzyun/items/833ae7fba582d899c618

“`python:median.py
# https://qiita.com/manzyun/items/833ae7fba582d899c618
data = [100, 300, 423, 328, 516, 412]

data.sort() # **超大事**

if len(data) % 2 == 0: # リストの要素の数の奇数・偶数判定
# 偶数でした
m1 = len(data) / 2
m2 = (len(data) / 2) + 1
# 整数に変換して位置合わせ
m1 = int(m1) – 1
m2 = int(m2) – 1
print(data[m1] + data[m2]) / 2
else:
# 奇数でした
m = (len(data) + 1) / 2
m = int(m) – 1
print

元記事を表示

Djangoでbitflyerの収支管理アプリを作ってみる(03.ユーザー情報新規登録画面を作る。)

前の。

Djangoでbitflyerの収支管理アプリを作ってみる(02_03.ログイン画面を作る③。)
https://qiita.com/redmeteor777/items/fd649baf43753185a5f7

今回は新規画面を作ります。
やることはあまり変わらないのでゴリゴリ書いていきましょう。

forms.pyを編集

“`forms.py
from django import forms

class LoginForm(forms.Form):
user_id = forms.EmailField(
label=’user_id’,
max_length=30,
min_length=8,
required=True
)

password = forms.CharField(

元記事を表示

Djangoでbitflyerの収支管理アプリを作ってみる(02_03.ログイン画面を作る③。)

前の
Djangoでbitflyerの収支管理アプリを作ってみる(02_02.ログイン画面を作る②。)

https://qiita.com/redmeteor777/items/8fd573b2aee3dfa20515

前回入力フィールドを作成したのですが、表示の体裁を整えるのをすっかり失念しておりました。
というわけで、今回はtableタグを使って見栄えを整えたりしていきます。

編集するのはlogin.htmlです。

“`login.html
{% load static %}




{{title}}
{% comment %} {% endcomment %}

{{titl

元記事を表示

Djangoでbitflyerの収支管理アプリを作ってみる(02_02.ログイン画面を作る②。)

前記事のようなやつ

Djangoでbitflyerの収支管理アプリを作ってみる(02_01.ログイン画面を作る。)
https://qiita.com/redmeteor777/items/1b974f15ac8b0e87a17d

ある程度記事数書き上げたらまとめる予定。
後記事へのリンクとか。

前記事の最後に生やした草を刈り取って、入力フィールドを埋めていきます。

まずloginディレクトリの中に、フォームを作成するためのファイル、[forms.py]を作成します。
そして、作成した[forms.py]に入力フォームについての関数を書いていきます。

“`forms.py
from django import forms

class LoginForm(forms.Form):
user_id = forms.EmailField(
label=’user_id’,
max_length=30,
min_length=8,

元記事を表示

AtCoderで緑色になるまでにやったこと

初投稿です。
今年の7月から競技プログラミング(AtCoder)を始めて、
12/28に行われたAGC41でついに緑色(rating: 800~)になりました!!
年末までに緑色になるというのを目標としていたため、ギリギリ滑り込めてよかったです。
スクリーンショット 2019-12-29 14.39.05.png
このような記事は腐る程あるとは思いますが、緑色になって嬉しくなったので、
緑色になるまでにやったことを書いていきたいと思います。

##1. 自分の背景
私は私大の電気電子工学修士卒で、特にプログラミングに慣れ親しんでいた訳ではありません。
授業でC言語の授業、研究でPythonを少し触った程度です。
今年の4月から半導体回路の設計、評価をする会社に就職しました。
私のいる部署ではプログラミングをする業

元記事を表示

[2−1]作成したQRコードを読み取り識別する

この記事は[“QRコードを使った入場システムを自作する”](https://qiita.com/inchoXD/items/10e22dbde4a5d4724c44)シリーズの記事です。

#前回
[“[1]独自のフォーマットに基づいてQRコードを発行する”](https://qiita.com/inchoXD/items/a8164c54ba8ae5bae74f)では独自のフォーマットのQRコードを発行してデータベースに登録することができました。
今回はデータベースに登録したQRコードの読み取り方です。

#QRコードを読み取るには
スキャナーを用意する予算がなかったのiOSアプリのPythonista3を利用してQRコードを読み取ります。
##手順
Pythonista3を利用しなくてもなんでも読み取った後の処理は同じです。

– QRコードをスキャン
– 読み取ったコードを文字列に変換
– MySQLで検索をかける

##Pythonista3でQRコードを読み取る方法
今回一番きつかったのがこの部分で、objective-cをPython上で動かさなければいけませんでした。
P

元記事を表示

無職おじさん(23)が、頑張って書いたAnacondaの導入方法[2019/12/30現在]

はじめまして!記事をご覧くださりありがとうございます。
AI・IoTのプロフェッショナルを目指して修行中をしていましたが、
メンタルぶっ壊れて療養中の、のぶたん改め「びりどら」です。
恥の多い生活を送ってきました。
不健全で未熟なイノシシ&チンパンジー人格を解消して
人様にご迷惑をおかけしないように成長したいと考えています。

#Anacondaとは..?
pythonの開発環境とその他便利なツールがまとまって入っているパッケージのことです。

私の場合、下記URLに書いた通り、ラジオ体操のブザー演奏に使う、音階自動生成ツールを作ろう
https://qiita.com/nobutan_tinou/items/31c49947f0e19cec851c
と思ったのですが、前段階として、python入ってないぞ!と気づいたので
「Anaconda」を導入するに至った次第です…

**ANACONDANAVIGATOR**にある通り、Jupyter Notebook,Spyderなど便利なものが入っていますが、

![anaconda.PNG](https://qiita-image-

元記事を表示

クラスとオブジェクトの復習

“`Python
class Enemy:
def __init__(self, name):
self.name = name
def attack(self):
print(str(self.name) + ‘は勇者を攻撃した’)

e1 = Enemy(‘スライム’)
e1.attack()

enemies = []
enemies.append(Enemy(‘ガーゴイル’))
enemies.append(Enemy(‘ドラゴン’))
enemies.append(Enemies(‘魔人’))

for e in enemies:
e.attack()
“`

元記事を表示

関数の復習

指定した数が、正の数か負の数か判定する関数

“`py
def discri(a):
if a > 0:
return str(a) + ‘は正の数です。’
elif a == 0:
return str(a) + ‘はゼロです。’
else:
return str(a) + ‘は負の数です。’

print(discri(15))
print(discri(0))
print(discri(-24))
“`
15と0とー24を判定。

元記事を表示

OTHERカテゴリの最新記事