at backyard

Color my life with the chaos of trouble.

Python

Pythonのsubprocess.Popenでファイルを開こうとすると【[WinError 2] 指定されたファイルが見つかりません】

Windows環境でsubprocess.Popenでファイルを開こうとすると【[WinError 2] 指定されたファイルが見つかりません】というエラーがでる MacとWindowsどちらにも対応したアプリを書いていて、とある処理でPythonのsubprocess.Popenを使って指定したファイルを開…

Pythonのsqlite3を用いてDBからの取得結果をdictで返すサンプルコード

タイトルのようなことをしたかったのだが、検索してみると理解が間違えている(?)日本語の記事が普通に検索結果上位に出てきたので、自分の方でも改めて記載しておくことにした。 fetchoneを使って指定したデータをdict形式で取得する方法 サンプルコードを下…

Python3で最大の整数を取得する関数 - sys.maxsizeについて

Python3 では表示できる整数の上限というのはないらしい。 (逆に言うとPython2ではあったようで、そちらの値は sys.maxint という関数で値は取得できた。だが、Python3ではこちらの関数自体がなくなっている) 整数の上限はないようだが、最大値を示す整数を…

M1 Mac環境でのcx_Freezeの実行ファイル作成までのメモ

Pythonで配布可能な実行ファイルを作成する際に有効な手段としてcx_Freezeがある。 少し前に下記のポストでも書いたが、似た選択肢としてはpyinstallerがあるが、こちらはライセンスがGPLなので、例えば商用で利用するようなケースでは厳しくなってくる。 そ…

tkinterでLabelのテキストを変更する方法

tkinterのLabelのテキストを変更する方法に関する備忘録。 Labelのテキストを変更する方法は簡単で、tk.Label で生成したLabelインスタンスの text 属性を変更することで、テキストを変更することができる。 具体的には label["text"] = "変更後のテキスト" …

pyinstallerをmacで利用したときに"OSError: Python library not found: libpython3.10m.dylib, libpython3.10.dylib, Python3, .Python, Python" というエラーが出た場合の対応手順メモ

pyinstallerを利用したときのエラー対応に関する備忘録です。 目次 目次 環境 事象 対応方法 余談: pyinstallerのライセンスはGPLなので商用利用などには注意 pyinstallerがGPLで使えないなら、cx_Freezeという選択肢? 追記: ちょっと触ってみたが自身の環…

tkinterとsqlite3を使ってGUIアプリを作ってみる

tkinterとsqlite3(SQLite)を使ってみた際の備忘録です。 sqlite3でdatetimeを(擬似的に)扱う方法については下記を参考にしている。 qiita.com 色々と実装例を見ていると、フロントエンドとバックエンドで構成するほうが良さそうだが、今回はサンプルというこ…

tkinterのgirdを使ったウィジェットの配置について

あけましておめでとうございます。2022年もよろしくおねがいします。 昨晩は妻からプレゼントしてもらったニューマットレスを敷いて寝たのですが、マットレスが変わるとこうも寝心地が変わるものかと驚いています。 まるでホテルの良質なベッドで寝たかのよ…

tkinterでPython GUIプログラミング入門

PySimpleGUIは触っているが、その下のレイヤーで動くtkinter自体は触ったことがなかったので、このタイミングで入門してみようと思う。 一通りtkinterを使ってGUIアプリを作れるようになるところまでをこの記事内に書いていく。 長くなると思うので目次を要…

PySimpleGUIとtkinter、それぞれでHTMLのURLリンク(ハイパーリンク)をテキストフィールドに作る方法

目次 目次 PySimpleGUIでHTMLのURLリンク(ハイパーリンク)をテキストフィールドに作る方法 Pythonでブラウザを起動する方法 PySimpleGUIの画面上にハイパーリンクを実装したサンプル テキストに対してイベントを付与する tkinterでHTMLのURLリンク(ハイパー…

インストールされているChromeのversionに応じたchromedriverを勝手にインストールしてくれるwebdriver-managerが便利

SeleniumからChromeを扱う時、現在PCにインストールされているChromeのversionに応じたchromedriverを自身でインストールしておく必要がある。 ただ、Chromeのversionは定期的に新しくなるため、Chromeのversionが更新された際には対応するChromeのdriverを…

Pythonを使って指定した列をリストで取得する方法(openpyxl利用)

openpyxlを使って縦一列の値をリストで取得する方法 PythonでExcelを扱う際にopenpyxlを使うケースは多いが、今回はそんなopenpyxlに関する備忘録をこちらに書き残す。 openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.…

SeleniumでshadowRoot内の要素をJavaScript(execute_script)を利用しなくても取得できるようになった

はじめに このポストは元々 Pythonの Selenium でshadowRootを取得するときにdictで取得されてしまう件 (chromedriver-binaryに関する問題) というタイトルで書かれたものだったが、2021年11月のSeleniumのshadowRootに関する対応内容に合わせて、タイトルを…

PythonでlocalStorageのmockを作ってみた。Fizz BuzzとToDoアプリの間に作るもの。

PythonでlocalStorageのmockを作ってみた 作ってみたものはこちら github.com 作った理由は特になく、以前こちらの投稿で書いたlocalStorageのmockを作った際に、同じような実装をPythonで作れないものかと思い、作ってみたというだけになる。 shinshin86.ha…

mac上でダブルクリックでPySimpleGUIを用いたGUIアプリケーションを起動する方法

下記のポストに引き続き、PySimpleGUIに関するポスト。 shinshin86.hateblo.jp macでは .command という形式で .sh ファイルを作成することで、ダブルクリックでそのシェルスクリプトファイルを実行することができる。 この仕組を応用して、ファイルをダブル…

PySimpleGUIを触ってみた備忘録(ボタンの配置とログ出力のサンプル、テーマカラーについて)

PySimpleGUIというPythonでかんたんにGUIを作れるライブラリを触ってみたので備忘録。 github.com 目次 目次 PySimpleGUIとは? PySimpleGUIはライセンスが LGPL3.0 なので商用利用などで実行バイナリを配布する場合は注意が必要 PySimpleGUIで作成したログ…

Pythonの小さなWebフレームワークBottleについているSimpleTemplate Engineを試してみた

Pythonで一番小さなWebフレームワークと言われているBottle。 このBottleにはSimpleTemplate Engineというテンプレートエンジンがついている https://bottlepy.org/docs/dev/stpl.html 私は今までこれを使ったことがなかったのだが、先日自身が公開しているb…

pyenvをM1 MacにインストールしてPython環境を構築する

M1 Mac(Apple Silicon)に Python 環境を作りたくなったのでインストールしていく 基本的に私はGitで直接チェックアウトしてインストールする方法をいつも選択していたので、今回もこちらをセレクト。 ( brew は使いません) https://github.com/pyenv/pyenv#b…

検索順位チェックツールの比較と、無料で使えるSEOツール(検索順位チェックツール)をPythonで自作してみた話

目次 今回の記事は少し長めです。 前半が検索順位チェックツールの比較 後半が自作の検索順位チェックツールのご紹介となります。 目次 検索順位チェックツールの比較 RankTracker そもそも検索順位チェックツールはどのようなシーンで使われるの? RankTrac…

Pythonのcsv.DictReaderをlistに食わしたときの挙動についての疑問メモ

Pythonのcsv.DictReaderの使い方でよくわからないことメモ 普段からPythonを使っているわけではないので、 pythonista の方々からしたら、こういうのは常識なのかもしれない。 が少しハマったのでメモを残す。 下記のようなコードを書いて実行する。 import …

ImportError: cannot import name 'secure_filename' from 'werkzeug' というエラーが出たときの解決方法

久しぶりにFlaskを使ったプロジェクトを動かしたら、こんなエラーが出ていた。 ImportError: cannot import name 'secure_filename' from 'werkzeug' 解決方法については下記のstack overflowを参照した。 stackoverflow.com -from werkzeug import secure_f…

久しぶりにbottleを試してみるまで - 2019年(導入備忘録)

過去に何度かbottleは触っていたが、また久しぶりに触ってみようと思った。 bottleをセットアップして、触り出すまでの備忘録。 https://bottlepy.org/docs/dev/ bottleでのアプリ開発セットアップ 今回はpipenvを使って試していく 使用するPythonのバージョ…

PythonのFlaskサンプルアプリをpipenv使いつつ、Docker上のMySQLと共に立ち上げる。

ふいにPythonに触りたくなったので、かなり前に書いたこちらの記事を自己参照しながら、久しぶりにFlaskで基本的なWebアプリのサンプル(CRUD)を動かしてみることにした。 shinshin86.hateblo.jp なお、上の記事にも書いているが、アプリ自体は自身で書いてい…

pyinstallerを用いて作成したwindows用のバイナリにてssh接続を実施する

こんなメモがずっと下書きの中で眠っていた。たぶん書いたのは数年前とかかも、、、眠らせておいても、削除することになるだけなので、公開します。 個人的な備忘録といった感じです。 ちなみに内容的には、調べた際に参照したサイトを淡々と張っているとい…

mac環境でpython mojimoji のインストールに失敗した際の備忘録

mojimojiをインストールしようとした際の備忘録。 mac環境だとコンパイラ関連の要因でインストールに失敗するよう。 下記の記事を参考にさせていただき、問題は解決。 qiita.com ちなみに私の環境はpyenv上でセットアップしたPython3(使用していたバージョン…

pyenv使ってpythonをインストールをしようとしたらzipimport.ZipImportErrorが出たので対応した備忘録

pyenv使ってPythonをインストールをしようとしたらzipimport.ZipImportErrorが出たので対応した備忘録になります。 macOS Mojave 10.14にアップデート後にpyenv install 3.7.2しようとしたら、下記のようなエラーが出ました。 zipimport.ZipImportError: can…

pythonでとにかく2次元配列を1次元配列に変換したいとき(重複は削除した上で)

自分のためへの備忘録。 もっと良い方法があるかもしれないが、重複は削除したうえで、とにかく二次元配列を一次元配列に変換したいという時。 (順番などは考慮しない) 試したPythonのversionは3.5.1 >>> sample_list = [[1,2,3], ["hoge", "fuga", "BBB"], …

REST API with Falcon, MongoDBのBoilerPlateを試す。

この記事はなに? 最近Falconを触ってみたところ、かなり使い勝手が良さそうがな感じでした。 ちょうど作ろうとしていたWebアプリのAPIサーバをこれで作りたい気分になったので、まずは簡単なAPIサーバから作ってみようと思っていたところ、 すでにBoilerPla…

FlaskでCRUDを学ぶ

Flask with Python3でCRUDの基本を学びたいと思い、参照したGIthubリポジトリが下記となる。 セットアップも簡単。 github.com セットアップ手順は下記の通り なお、自身の環境はmacOS Sierraとなる。 git clone https://github.com/tanrax/flask-contacts.g…

Pythonで指定したディレクトリ内のファイル名リストを取得する

個人的なコードのメモ。備忘録 dir_name = "test_dir" json_file = "*.json" # 指定したディレクトリ内のjsonファイルの(./test_dir/*.json) # ファイル名(拡張子なし)をリストとして取得する file_names = [os.path.splitext(os.path.basename(f))[0] for f…