Python3関連のことを調べてみた2021年11月23日

Python3関連のことを調べてみた2021年11月23日

インターネット接続にプロキシサーバ必須な環境にて、PythonのSMTPクライアントでGmailからメールを送る方法

#本記事の内容
– インターネット接続にプロキシサーバ利用が必須な環境において、Gmailからメールを送れるPythonアプリを実装します。メールプロトコルはSMTPです。

Gmailのsmtpサーバを用いて、Pythonからメールを送りたかったのですが、
インターネット接続のためにプロキシサーバを経由させる必要がでたので、対応方法を調査してまとめました。

例えば、企業内の内部ネットワークやクラウドにおける内部ネットワークからのメール送信等、インターネット接続にプロキシサーバ利用が必要となるプライベートなネットワーク環境でPythonアプリを動かすことを想定しています。
きっと状況としては、よくあるはず。何かの役に立てば幸いです。

#実施環境
– Windows 10
– Visual Studio Code
– Python 3.8

#手順の流れ
1. Googleアカウントでのアプリ認証用のパスワード発行
2. SMTPでプロキシ設定できるPythonライブラリのインストール
3. Pythonプログラムの作成と実行

## 1. Googleアカウントでのアプリ認証用の

元記事を表示

Windows で「有効なフォントファイルではありません」と表示される場合の対処法

# イントロダクション

フォント画像の描かれた SVG から、FontForge で Python Script を使用して ttf のフォントファイルを作成しました。
その際以下のアラートが出て、フォントを利用できないことがありました。

![invalid_font_alert.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33738/99ad82bb-f75e-2ef1-7315-e42c1ac25915.png)

# ENV

– Windows10
– FontForge

# 原因

! (半角ビックリマーク)が指定されていない。

## 解説

「!」は UTF-8 で U0021 という文字コードを割り当てられています。これは制御文字を除くと一番先頭の文字コードになるため、恐らく Windows ではフォントファイルの有効性を確認するアルゴリズムとして「!」の有無を見ているのだと思います。

ちなみに「!」に空白の画像を指定しても「有効なフォントファイルではありません」と出てプレビュ

元記事を表示

pipenvをインストールする方法

①まずpythonを下記からダウンロード、インストールしておく
https://www.python.org/downloads/

②get-pip.pyの取得
下記の Supported Methods >> get-pip.py に従ってget-pip.pyをダウンロードする
https://pip.pypa.io/en/stable/installation/

③pipインストール
ダウンロードしたget-pip.pyに移動し、下記コマンドを実行

“`python get-pip.py

④pipenvをインストール
下記コマンド実行

“`pip3 install pipenv

※pip install pipenv ではcommand not found :pip と表示される。
理由は下記に記載されていました。
https://teratail.com/questions/269321

元記事を表示

たった3時間で言語処理をする。~MeCabとWordCloudとGoogle Colabでサクッと簡単~

# Introduction

## きっかけ
最近はWebアプリ開発にかまけて、楽しい楽しい言語処理を疎かにしていたので、久々にさわってみたくなりました。言語処理といえば、、、MeCabですね。

https://qiita.com/Senple/items/1ad08b1a7ac9560bef62

ただ現在はMac使いのボク(キリッ)ですが、米津玄師+WordCloudの記事当時は、WindowsによるMeCabの環境設定に大いに苦労しました。もうあんな思いはしたくないですし、時代はクラウドなので、クラウドでの環境設定に興味を持っていました[^1]。言語処理といっても、仰々しいことをやるのはしんどいので、簡単[^2]にWordCloudでの可視化と組み合わせてみました。
実際の作業は、思い立って画像をダウンロードするまで、3時間かかってないです[^3]。 簡単楽ちん♪

## 結論
こんな感じのpngファイルが完成します。

![sample_shirasujiro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

じゃんけんゲーム

“`python:jyanken.py
import random

count = 1
jyanken = [‘グー’, ‘チョキ’, ‘パー’]

def kati():
print(‘———————————–‘)
print(‘あなたの勝ち’)
print(‘あなたは’ + jyanken[int_te] + ‘相手は’ + jyanken[aite])
print(f'{count}回目で勝負がつきました’)

def make():
print(‘———————————–‘)
print(‘相手の勝ち’)
print(‘あなたは’ + jyanken[int_te] + ‘相手は’ + jyanken[aite])
print(f'{count}回目で勝負がつきました’)

#最初に手を決める部分、グーは1、チョキは2、パーは3に変換
while True:
te = input(‘手を決めて下さい:グー

元記事を表示

kivyMDチュートリアル其の什肆乃弍 Components – Layout篇

ハロー、Qiita!いかがお過ごしでしょうか。

はい、今週も相変わらずやっておりますが、元気にやっていきましょう。

今週は何といっても、月食についての話題がホッとではなかったでしょうか。私も外を
歩いているところで見かけましたが、あまりよく分からなかったですね。時間帯もあった
のでしょうが、肉眼では捉えにくかったです。みなさんはどうでしたでしょうか。

今週のKivyMDですが、先週から伝えている通り今日でコンポーネンツが終了します。
長かったような短かったようなよく分からない気持ちでもありますね。。ですが、完全に
終わりといった訳でも無く、ポロポロ有効化されてないプロパティなどあってバージョン
アップをしないと挙動が変わっているか分からないものもあります。一覧は以下の通りです。

* NavigationRail
* Snackbar
* FileManager
* (*Picker)
* (DataTables)

バージョンアップ後にポロポロ出てきたものを検索すると、ざっと上記5つが浮上してきま
した。前半2つは検索して見てもらえれば、どんな意図しない挙動があるか見ることがで

元記事を表示

PostgreSQL: テーブルの所有者を変更する (Python3)

PostgreSQL で複数のテーブルの所有者を変更する方法です。
Ubuntu 21.10 で確認しました。

ライブラリーのインストール

“`bash
sudo apt install python3-dotenv
“`

“`text:.env
user=’******’
password=’******’
data_base=’******’
“`

“`py:change_owner.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# change_owner.py
# Nov/20/2021
#
# ——————————————————–
import os
import sys
import psycopg2
import psycopg2.extras
from dotenv import load_dotenv
#
# ——————————————————

元記事を表示

AOJトライに関する知識知見の記録共有:Volume0-0044

# タスク概要
Prime Number II

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0044

# コード実装例
TIPS

1. 例外処理含む評価パターンを追加
1. 入力値自体が素数にその旨出力
1. 出力数をパラメータ変数指定し調整可能に

“`
import pprint, sys
import sympy

def core(arg, n=3):
r = [arg] if sympy.isprime(arg) else []
return [sympy.prevprime(arg)] + r + [sympy.nextprime(arg, i) for i in range(1, n+1)]

def app(*args):
ret = []
for arg in args:
try:
r = core(arg)
except Exception as e:
r = e

元記事を表示

C# から Python へ JSON の受け渡し

C#からPythonへJSON文字列を送り、少し編集してC#側に戻すサンプル。
Pythonにあまり詳しくないC#経験者向けに書いています。

# 環境

– Windows10 64bit
– Visual Studio 2022
– .Net6.0
– Newtonsoft.Json
– Python 3.6.8

# C#側

標準入出力を介してやり取りする形になります。

“`c#:Program.cs
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Diagnostics;

// Pythonファイルのパス
string pythonFile = “Program.py”;

// Python側に渡すJSON
JObject inputJObj = JObject.Parse(@”{
‘CPU’: ‘Intel’,
‘Drives’: [
‘DVD read/writer’,
‘500 gigabyte hard drive’
]
}
“);

var proce

元記事を表示

Python ctypes 構造体 pragma pack (push,1)

本日はPythonのctypesに関する記事です。
実用的な内容ですので是非LGTM ストックお願いします ^__^

## ctypesとは

C言語のデータ構造をPythonで扱うことができるライブラリです。
Pythonをインストールするときにこちらのライブラリは標準でインストールされます。

Cの構造体をPythonでも扱いたいときなどに非常に便利です。

> [Python ctypes 公式ドキュメント](https://docs.python.org/ja/3/library/ctypes.html)

## 事例

今回紹介する例としては、

C側:構造体のデータをバイナリでログとして出力
Python:C側で吐き出されたバイナリのログデータを読み込んで表示

PythonでCのログを解析することで2次利用(可視化や機械学習)が各段にしやすいのでマスターしたい技術です。

# pragma pack (push, 1)

C側では構造体を定義するとき、 pragma pack をよく利用します。
これをPythonで定義するためには、下記が必要なので忘れないでください。

元記事を表示

【Python3】「ModuleNotFoundError」の対応

#はじめに
Webスクレイピングをやろうとして、WebDriverや beautifulsoupなどモジュールはインポートできてるのに、seleniumやbs4が認識されず、「ModuleNotFoundError」が発生してました。
結論としてデフォルトパスが通ってなかっただけなのですが、すごく遠回りして「sys.path.append()」でパスを追加するなど非エンジニアの私としては難しかったので、一番簡単だった方法を記載します。
※Windows10環境

・システムのプロパティから「環境変数」をクリックします。
![qiita1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2265307/ad57b515-3143-50a5-5e40-2db3d0248fca.png)

・ユーザの環境変数に新規で「変数名」をPYTHONPATHで「ModuleNotFoundError」となるライブラリのパスを「変数値」に指定。
(パスは「pip show selenium」などのコマンドで表示)
![qi

元記事を表示

WebTransportでもテキストチャットがしたい!(WebSocket比較あり)

# チャットなんてWebSocketで簡単にできるでしょ?

WebTransportをチェックしている皆様こんにちは。
特に仕事でもないのにWebTransporttが気になって仕方ない私です。
(しかも git add 直前に文字化けを直そうとしてファイルが消えましたが挫けません!)

さて、前回は簡単なechoをして1対1のやりとりができました。
そこで今回は複数人への送信ということでグループでのテキストチャットルームをやってみます。

まあ、WebTransportでもWebSocketとそんなに変わらずすぐできるでしょ。とか思っていました。

## 今回作ったもの

[ソースコードはgithub](https://github.com/alivelime/sample_webtransport_echo/tree/master/chat)

クラスター・サーバー上等でのmatplotlibに関するメモ

– [サーバサイドにおけるmatplotlibによる作図Tips](https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e)
– matplotlib.use(‘TkAgg’) and matplotlib.use(‘Agg’)

元記事を表示

matplotlibのsubplotはもうやめたい その2

Matplotlibのsubplotが使いにく過ぎて、はるか昔にこんな記事を書いた。https://qiita.com/ponnhide/items/fb375a610e4a9c0f743a
今回はその記事の続きで、subplot用の新しいツールをつくってみたという話。

# Matplotlibのsubplotは使いにくい
正直言って、Matplotlibのsubplotは依然として使いにくい。僕はmatplotlibの自由度の高さが好きで、どれだけggplotを布教されてもmatplotlibを使い続けているのだけど、subplot周りの実装は真面目に微妙だと思う。そして、この点は他の人からも指摘がなされ、改善が求められている。

– https://twitter.com/kasparmartens/status/1381991445381406722?s=20
– https://github.com/has2k1/plotnine/issues/46

これらの要望に対する返しとして、最近matplotlibはある機能を実装してくれた。それが [subplot_mosaic]

元記事を表示

重相関係数の意味あい

重回帰分析において,重相関係数の二乗(決定係数ともいうが)は独立変数どもが従属変数をどの程度説明するかを表す。
つまり,重相関係数が 0.5 ということは,独立変数どもが挙って従属変数を説明しようとしているが 0.5^2(Python なら 0.5**2であるが)つまり,0.25(つまり 25 %)しか説明できないということ。これは,ヤバいよね。

なお,重回帰分析の最も単純な場合である回帰分析においては,重相関係数は相関係数の絶対値を取ったものであり,重相関係数の二乗は相関係数の二乗に他ならない。
つまり,独立変数と従属変数の間の相関係数が r の場合,重相関係数は abs(r) であり,重相関係数の二乗(決定係数)は r^2 である。

相関係数の絶対値が 0.7 以上であれば,「強い相関がある」というように判断されるが,「独立変数は従属変数の 0.7^2 = 0.49 つまり,半分以下しか説明できていないのだよ」ということだ。

“`R
> x = c(3, 2, 4, 5, 1)
> y = c(1, 3, 4, 5, 6)
> ans = lm(y ~ x)
> summ

元記事を表示

Python 配列の使い方(自分用)

#リスト(配列)の初期化
角かっこ「[]」で囲み、要素をカンマ「,」区切りで並べる

“`python
empty_list = []

# 整数配列
int_list = [0, 1, 2]
“`

# 要素へのアクセス
###インデックスで
“`python
mylist = list(range(10))

# 正数は先頭からのインデックス
n = mylist[1]

# 負数は末尾からのインデックス 末尾の要素のインデックスが-1
n = mylist[-2]

# popメソッドで指定したインデックスにある要素をリストから取得して削除
value = mylist.pop() # インデックスを指定しない場合は末尾の要素が削除される
print(‘popped value:’, value) # popped value: 9
print(‘mylist:’, mylist) # mylist: [0, 1, 2, 3, 4, 5, 6, 7, 8]
“`
### スライスで
“`python
mylist = list(ran

元記事を表示

AWS Lambdaからsuds-py3を使ってSOAP API連携をしてみた

RESTにとって変わられがちですが、ちょっと触る機会があったので、
表題の件を簡単かつざっくり解説していきます。

なお連携対象はOracle B2C ServiceのSOAP APIの想定です(http://documentation.custhelp.com/euf/assets/devdocs/unversioned/Connect_KFAPI/Default.htm)

##環境
Python3.8
AWS Lambda プロキシ統合あり

ライブラリ
suds-py3 1.4.4.1

##準備

まずはライブラリをインストール

“`
$ pip3 install suds-py3
“`

##実装

内容は連携するAPIに準じて読み替えてください。
インポート関係はこんな感じです。

“` python3
import os
import json
from suds.client import Client
from suds.wsse import *
from suds.sudsobject import asdict

WSDL = os.environ[

元記事を表示

俺的、Pythonに標準で搭載された便利機能たち

Pythonの利点はやはり`pip`を使って超簡単に超便利なモジュールをインストールできること. だが, Python自身も負けてない. ここでは筆者がよく使うPythonに標準搭載の便利だと思う機能を適当に紹介していく. いろんなものを詰め込んだのでかなり雑多な内容になってしまったが, これを読んだ人のPython人生の一助とならんことを願う.

# `functools.partial`

引数を部分的に指定された関数を生み出せる.

“`python
from functools import partial

def super_genius_function(arg1, arg2, arg3, args4, kwarg1=None):
# do something
return

# 最初の二つの引数を固定
arg12_fixed = partial(super_genuis_function, 1, 2)
# kerwordで指定もできる
arg34_fixed = partial(super_genuis_function, arg3=3, arg4=4

元記事を表示

Python3: Google Cloud Storage にアクセス

GCE の Ubuntu 21.10 で確認した方法です。GCE で実行するので、認証の部分のコードを省略できます。

スクリプトでアクセスする方法はこちら
[Google Cloud Storage にスクリプトでアクセス](https://qiita.com/ekzemplaro/items/cd648c8f14c7421a928b)

バケットの一覧

“`py:list_bucket.py
#! /usr/bin/python
#
# list_bucket.py
#
from google.cloud import storage
#
client = storage.Client()
#
for bucket in client.list_buckets():
print(vars(bucket)[‘name’])
print()
#
“`

ファイルの一覧

“`py:list_files.py
#! /usr/bin/python
#
# list_files.py
#
from google.cloud import storage
#

元記事を表示

スライスでtorchのunsqueeze的な処理

スライスにNoneを追加するとNoneを追加した次元に空の次元が追加される。

“`py
>>> import numpy as np
>>> x = np.ones((32,27,517))
>>> x[:,:,None,:].shape
(32, 27, 1, 517)
“`

元記事を表示

OTHERカテゴリの最新記事