Python3関連のことを調べてみた2022年07月08日

Python3関連のことを調べてみた2022年07月08日

[Python, tkinter]画像ファイルをGUIで削除

# Pythonのtkinterを用いて画像ファイルをGUIで削除
– 機械学習のデータセット作成の際など, データセットに相応しくない画像を削除するのに使用できます。

## 実装
– **python**
– 使用ライブラリ
– **tkinter** : GUIのプログラムを作るのに使用
– **Pillow** : 画像を扱うのに使用

## 使い方
1. [リポジトリ](https://github.com/yarakigit/rm_img_GUI.git)をクローン

~~~ zsh
$ git clone https://github.com/yarakigit/rm_img_GUI.git
~~~

1. ライブラリをインストール
~~~zsh
$ pip install -r requirements.txt
~~~
2. 実行
– **in_dir** : 削除したい画像があるディレクトリのフルパス
– **img_type** : 画像の種類
~~~zsh
$ python main

元記事を表示

Herokuでリダイレクトする方法(Python3・Flask)

# TL;DR
– Herokuでは`.htaccess`によるリダイレクトが動作しなかった。
– `flask.redirect`を使ってゴリ押しする。

# `.htaccess`について(不可)
[[Heroku]herokuでhttpでのアクセスをhttpsへリダイレクトさせる設定](http://kayakuguri.github.io/blog/2015/03/03/heroku-force-https/ “[heroku]herokuでhttpでのアクセスをhttpsへリダイレクトさせる設定 – KayaMemo”)など、複数のサイトを参考に以下のように作成・アップロードした。
“`.htaccess
# リダイレクトを設定する宣言
RewriteEngine on
# X-Forwarded-Protoが設定されているときに作動
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
# HOST,URIを指定して転送
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L

元記事を表示

seleniumでいろいろAPIモドキ

seleniumを使って、httpリクエスト上げればいろいろ情報を拾ってくる機能を作って遊ぶ
かなり昔に書いたものですが、ほとんど修正無しで長期間動いているもの(=参照先Webページの仕様変更が少なく安定しているもの)を投稿。

適当なwebサーバ(CGI有効化)を用意して、cgi-bin以下にseleniumを使うスクリプトを配置する。

“` python
#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
import os, http.server, socketserver

PORT = 80
os.chdir(‘/app’)

class handler(http.server.CGIHTTPRequestHandler):
cgi_directories = [“/cgi-bin”]
httpd = socketserver.TCPServer((“0.0.0.0”, PORT), handler)
httpd.server_name = “webscraping”
httpd.server_port = PORT
htt

元記事を表示

s3とローカルとの間でファイルの簡易同期

s3上のファイルを頻繁に扱う場合の作業方法について

・s3上のファイルをマウントして直接作業する
 同一ディレクトリ上に一時ファイルなどが生成されるような場合に適さない(一時ファイルの更新が重い)

・ローカルで作業して、定期的にAWS CLIのS3 syncで同期
 単純に更新日時を元に同期するので、複数人で編集の競合が発生した場合に困る。

バージョン管理みたいな多機能は望まないが、スクリプトでシンプルに同期&編集競合を検出したい。

ということでスクリプトを書く。

“`c#

# -*- coding: utf-8 -*-
import boto3, sys, time, os, datetime, json
import pprint

# 前回同期時の「localファイル一覧」「s3上のファイル一覧」を覚えておく。
# s3上とローカル、「更新日時の新しい方」ではなく、「前回から変更があったか?」で判定させる。(更新日時の新旧は信用しない)
# 誤削除が怖いので、「片方にのみ存在するファイル」について、削除に関する処理は行わない(前回の存在有無に関わらず)。片方にのみ存

元記事を表示

【Python】Tkinterで多言語翻訳アプリを作ってみた(Part 1)

# はじめに
以前から翻訳アプリを作りたくてウェブで調べていたら、googletransという便利なライブラリーがあったので作成してみました。
“`md
環境
・Python3.10 64bit
・Windows11
“`
# ライブラリーのインストール

# 1.speech_recognitionのインストール

“`md
%pip install SpeechRecognition
“`
# 2.googletransのインストール

“`md
%pip install googletrans
“`
googletransについては、インストールの過程で苦戦しました。
Youtubeでソリューションがのっていたので、以下の動画を参考にしました。

# googletransの言語リスト

googletransの提供している言語リストは、こちらのURLを参考にしてください。

https://cloud.google.com/translate/docs/languages?hl

元記事を表示

SeleniumでGoogleアカウントにログインした状態を保持する

# はじめに
GoogleではSeleniumを利用したアカウントへの自動ログインは拒否するよう設定されています。
そのため、SeleniumでGoogleアカウントを利用するようなコードを実行したい場合は、Googleアカウントにログインした状態のブラウザを使う必要があります。
実際に私はSeleniumでGoogleアカウントを利用する自動テストの開発案件で、Googleアカウントにログインした状態のブラウザを使うようにしました。
そこで本記事では、Python + Selenium + Chrome環境でGoogleアカウントにログインした状態のプロファイルを指定してコードを実行する方法を紹介します。

# 事前準備
まずChromeを起動し、手動でGoogleにログインします。
次に、現在使用しているプロファイルを確認するため、URL欄に`chrome://version`と入れます。
「プロフィールパス」から使用中のプロファイルの場所と名前を確認することができます。![コメント 2022-07-05 080528.png](https://qiita-image-store.

元記事を表示

超初心者がe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】をpythonで解いてみた!Part3

https://qiita.com/K-suke99/items/d61684fabc881cf695ea

の続きです。

JOI 2011 予選 4 – 1 年生

https://atcoder.jp/contests/joi2011yo/tasks/joi2011yo_d

“`python:practice.py
N = int(input())
Alist = list(map(int, input().split()))
dp = [[0]*(21) for _ in range(N-1)]
dp[0][Alist[0]] = 1
Alist = Alist[1:]
for n in range(1,N-1):
for m in range(21):
if m-Alist[n-1] >= 0:
dp[n][m] += dp[n-1][m-Alist[n-1]]
if m+Alist[n-1] <= 20: dp[n][m] += dp[n-1][m+Alist[n-1

元記事を表示

【JAVA→Python】JAVAで書いた特定の文字をカウントするコードをPythonに書き換えてもらう【新人教育】

# JAVA研修を終えた新卒の子にPythonを教える
入社後研修が終わった新卒の子にとりあえず会社としてはわんぱくにもDjangoの本を渡して学習してもらおうという感じだったので(私の入社時もそうだった)Python自体を学んでもらってDjangoに取り組んでもらおうと思い独断で新人教育の機会をいただきました。
私自身が学習で文章題を解いた時にJAVAでコードを作成したので、せっかくなら新卒の子にPythonに変換してみてもらおうと思いコードを渡してみました。

# 目次
[1.実際に渡したコード(JAVA)](#1-実際に渡したコード(JAVA))
[2.そう、それはDjango](#2-そう、それはDjango)
[3.あれこれ話しがあとに返ってきた解答](#3-あれこれ話しがあとに返ってきた解答)
[4.おわりに](#4-おわりに)

# 1.実際に渡したコード(JAVA)
“`java:JAVA
import java.util.*;

public class Main {
public static void main(String[] args) {

元記事を表示

dataclassesの使い方

公式サイトはこちら
[dataclasses – Data Classes – Python 3.10.5 documentation](https://docs.python.org/ja/3.10/library/dataclasses.html)

# 使用するメリット

– ①可読性が高い
– ②型指定いないとエラーがでる
– ③特殊メソッドが定義される

## ①可読性が高い

通常のコンストラクタを使うと

“`python
class InventoryItem:
“””Class for keeping track of an item in inventory.”””
def __init__(self, name: str, unit_price: float, quantity_on_hand: int = 0):
self.name = name
self.unit_price = unit_price
self.quantity_on_hand = quantity_on_hand

d

元記事を表示

Djangoで作成したWebアプリケーションを無料で公開する(PythonAnywhere)

# 1. はじめに
前回の「[DjangoでHello Worldを表示する](https://qiita.com/t-shirayama/items/bc18d924dc672c7215cd)」で作成したWebアプリケーションをPythonAnywhereというサービスを使用して無料で公開します。

# 2. PythonAnywhereとは
PythonAnywhereはDjangoやFlaskなどのPythonのWebフレームワークに特化したホスティングサービスです。無料プランがあるため勉強用やお試しで利用することができます。無料プランだと制限は多いですが、有料プランに切り替えることで実運用も可能になります。

# 3. デプロイ
GitHubとPythonAnywhereを連携してデプロイします。

# 3.1 GitHubにソースコードをプッシュ
まず、GitHubにリポジトリを作成し、下記のコマンドでソースコードをプッシュします。
コマンドは前回作業していた一番上のmysiteフォルダに移動して実行します。

“`
$ git init
$ git config –gl

元記事を表示

備忘録:matplotlibでベクトル描画(2D / 3D)

# とりあえず2次元描画
( x, y ) 座標で平面ベクトルを表示してみた

# ソースコード
“`python3:python3
import numpy as np
import matplotlib.pyplot as plt

# 座標設定関数
def coordinate(axes, range_x, range_y, grid = True,
xyline = True, xlabel = “x”, ylabel = “y”):
axes.set_xlabel(xlabel, fontsize = 16)
axes.set_ylabel(ylabel, fontsize = 16)
axes.set_xlim(range_x[0], range_x[1])
axes.set_ylim(range_y[0], range_y[1])
if grid == True:
axes.grid()
if xyline == True:
axes.axhline(0, co

元記事を表示

matplotlibを使ってグラフの面積を可視化する|備忘録

# きっかけと概要
数学を教えるときに、
“`math
S =\int_{0}^{3}\{f(x)-g(x)\}dx
“`
とか積分して面積を求めることがありますが、
***これをなんとか可視化できんかいな?***
って思ってやってみました。備忘録です。

# ソースコード
“`python3:python3
import numpy as np
import matplotlib.pyplot as plt

# y = x**2
def mkdata(n):
np.random.seed(0)
px = []
py = []
for i in range(n):
x = np.random.random()
y = np.random.random()

# y = x**2 未満の時プロット
if y < x**2: px.append(x) py.append(y) return px, py ### 散布図を描く ### # 発生させる乱数の個数:10000 # 点の大きさ:1 plt.sc

元記事を表示

【Python】Tkinterを使ったコメントを投稿してみた

# はじめに
Pythonは未だ初心者ですが、Tkinterを使ってコメントを投稿してみました。

## Tkinterをインポートする
まず初めにTkinterをインポートします。

“`
>>>import tkinter
“`
## コードを実行する
下記はコードの実行結果です。
“`python
import tkinter
“”” 投稿ボタンの生成 “””
def click_btn():
x = text_x.get(‘1.0’, ‘end -1c’)
text_y.insert(tkinter.END, x)
“”” 消去ボタンの生成 “””
def delete_btn():
text_y.delete(‘1.0’, tkinter.END)

root = tkinter.Tk()
root.title(‘コメント出力’)
root.geometry(‘600×600’)
“””コメント書き込み欄の生成 “””
text_x = tkinter.Text(width = 50, height = 6, font = (‘Times Ne

元記事を表示

Flaskでユーザー認証を行う方法

まで、編集途中です。
これをFlaskで実装したときに調べた内容メモです。
https://developers.google.com/identity/protocols/oauth2/openid-connect

## 全体の手順

こちらに詳細が書かれています。
https://developers.google.com/identity/protocols/oauth2

ウェブサーバーアプリケーションに書かれているように
1. ユーザー認証して認証コード取得
2. 認証コードをアクセストークンへ変更
3. アクセストークンを使ってAPI

![2022-07-03_21h57_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/428239/6ca6820d-2fd6-b572-941d-76fdbb231c9f.png)

アクセストークンは、認証済みユーザーを識別するためのもので、
アクセストークンがあれば、指定しているAPIが使えるらしい。

久しぶりに[一番分かりやすいOAuth

元記事を表示

【Python】英語学習のために英作文を翻訳するプログラムを作成してみた

最近、英語学習をはじめました。
その際に英作文の添削をしてもらっているため、後で日本語のみで英作文をしたいと思い至りました。

そこで、添削がかかった文章のPDFを翻訳し、日本語のみのスクリプトを作成するプログラムがあったら便利なのではと思い、実際に作ってみました。

その際にPDF関連のライブラリなど学びが多かったのでシェアいたします。

# 実装
“`python:trans.py
from googletrans import Translator

from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams

import pathlib

import re

# PDFファイルのパスを取得
p_temp = pathlib.Path(‘./files’).gl

元記事を表示

PyTorch の dataloader の shuffle 機能に再現性をもたせる方法

# はじめに
複数の実験条件で比較検証を行う場合、比較したい条件以外は同じ条件で実験しなければなりませんが、dataloader の shuffle 機能を使うと実行ごとに毎度変わったデータの読み込み順になってしまいます。これでは学習モデルの再現性を保つことができません。
今回は、データの読み込み順にランダム性をもたせつつ、shuffle機能の再現性をseedで担保する解決策を残しておきます。

# 解決方法
**torch.manual_seed(seed)を加えます。**

“`train.py
seed = 20220703

”’
追加コード: shuffle の再現性を担保する
”’
torch.manual_seed(seed)

train_set = mydataset.MyDatasets(input_dir)
train_loader = torch.utils.data.DataLoader(train_set,batch_size=n_batch,shuffle=True,num_workers=4,pin_memory=True,drop_last=

元記事を表示

Django 管理画面でのカスタムフィルター admin.SimpleListFilter


## 環境
Windows 11 Home
Python 3.10.2
Django 4.0.2
venv利用あり

## 背景
管理画面において、フィルターの名称を変えたりカスタマイズしたフィルターを使用したかった。
例えばBool値のフィルタにおいて、「はい」「いいえ」だけでなく、データ登録されていないものを抽出するために
「はい か いいえ=登録あり」「はいでもいいえでもない=登録なし」といったものを用意したかった。

## models.py
“`python:mysite\models.py
from django.db import models

class TestModel(models.Model):
class Meta:
verbose_name = ‘テストモデル’
verbose_name_plural = ‘テストモデル’

columnA = models.CharField(max_length=30, unique=False, primary_key=True)
columnB =

元記事を表示

PythonとSQLiteを使ってみた

仕事ではJavaやJavaScriptが多いですが、個人的にはpythonが好きです。
pythonの現場に行く機会があった時にできるようになっていたいなあとなるべく毎日勉強しています。

今回はpythonに標準であるSQLiteを使って基本的なことをやってみました。
まず、DB作成からテーブル、データのinsertまで。

“`Python
import sqlite3

#データベースファイルを作る
dbfile = sqlite3.connect(‘fruit.db’)
c = dbfile.cursor()

createSql = ‘create table FruitName(id,name);’
c.execute(createSql)

insertSql = “insert into FruitName(1,’Apple’);”
c.execute(insertSql)

dbfile.commit()
dbfile.close()
“`
作成したテーブル内のデータを表示するためのソースがこちら
“`Python
import sqlite3

connect

元記事を表示

2022年のPythonの組み込みvenvツールについて

・Pyenv:プロジェクトごとの仮想環境のコンテキスト外で、コマンドラインでさまざまなPythonエディションを使用する場合に便利です。
・Pipenv:Pipenvは、仮想環境とプロジェクトの依存関係管理ツールとして使えます。ただし、Pipenvはどのような形式のパッケージ化についても対応している訳ではないです。そのため、最終的にPyPIにアップロードしたり、他の人と共有したりするプロジェクトには理想的ではありません。
Poetry:Pipenvのツールセットを拡張したPoetryは、プロジェクトと要件を管理するだけでなく、プロジェクトをPyPIに簡単にデプロイする事が可能です。
PDM:最も最先端のプロジェクトです。PoetryやPipenvと同様に、PDMは、プロジェクトをセットアップし、その依存関係を管理し、そこから配布アーティファクトを構築するための単一のインターフェースを提供します。

元記事を表示

Hello Python3

Code: sample

`
print(‘hello world’)
`

元記事を表示

OTHERカテゴリの最新記事