tse(Python Stream Scripting) サンプル集
png画像を検索し、jpegに変換する。このとき、横幅が1500px以上なら1500pxに縮小する。
find . -name '*.png' | tse -s "" 'p=Path(L);j=p.with_suffix(".jpeg");P(fr`convert {p} -resize "1500x>" {j}`)'
find . | tse -ms collections,pprint -
Pythonには、オブジェクトにある名前の属性が存在するかどうかをチェックする hasattr という組み込み関数があります。
例えば、リストオブジェクトに append
という属性が存在するかどうか確認するときは、次のようにかきます。
L = []
print(hasattr(L, 'append'))
print(L.append)
リストオブジェクトには append
という属性が存在し、メソッドだということ
先日、Pythonを闇改造した でPythonにちょっとした改造を加えてみました。
この修正は、
def register_user(first, last, addr1, addr2):
d = {'first': first,
'last': last,
'addr1': addr1,
'addr2': addr2,
'tel': '123-456-789'}
requests.post(URL, d)
のようなコードを、JavaScriptの
d = {first, last, addr1, addr2, tel:'123-456-789'}
のように、
d = $
Pythonで辞書データをたくさん扱うコードを書いていると、辞書の要素をオブジェクトの属性みたいに参照したくなることがあります。
Javascriptなんかだと、辞書でも
data = {
'name': 'value'
}
alert(data.name)
のように、辞書.名前
で参照できますが、Pythonの場合は
data = {
'name': 'value'
}
print(data['name'])
となり、数が多いとちょっと面倒になります。
これまで、PythonのプロジェクトでGithub Actionを使うとき、こんな感じで仮想環境ごとキャッシュしていました。
# 仮想環境を作成
- name: Create venv
run: |
python3 -m venv .venv
# 仮想環境をキャッシュから復元
- name: Cache venv dependencies
uses: actions/cache@v1
with:
path: .venv
key: venv-${{ runner.os }}-${{ hashFiles('requ
pythonのslackclientで非同期タスクを実行したらValueErrorになった話 で、たぶん asyncioのtaskを勘違いしてる気がするので簡単に解説。
要は asyncio.run にコルーチンではなくてTaskを渡したらエラーになった、という話ですが、このページでは、
Taskオブジェクト(asyncioが内部的にloopに委ねるときにwrapするオブジェクト)
と書かれていて、Taskオブジェクトをちょっと誤解している感じがします。このTaskの役割を理解したら納得がいくのではないかと思います。
まず
管理者として実行してください。
import winreg
key = 'System\CurrentControlSet\Control\Keyboard Layout'
scancodemap = (b'\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00'
b'\x00\x00\x1d\x00:\x00\x00\x00\x00\x00')
with winreg.OpenKey(winreg.HKEY_LOCAL_MA
Pythonは名前だらけでは、Pythonの変数も関数も結局はみんな名前、という解説をしました。この特徴を使って、Pythonのちょっとおもしろい挙動を調べてみましょう。
Pythonの変数には、グローバル変数とローカル変数があります。関数の内部で定義した変数はローカル変数、それ以外はグローバル変数となります。
global_var = "これはグローバル変数です。"
def func():
local_var = "これはローカル変数です"
グローバル変数は同じモジュール内なら
Pythonでもなんでも、プログラムを書くといろんな名前が出てきます。変数名や関数名、クラス名にモジュール名。
次のコードは、100
という数値に、number
という名前をつけます。
numb
私が管理するこのサイトや python.jp は MiyadaikuというSSGを使って構築しています。
記事の執筆は普通にエディタを立ち上げてMarkdownやreStructuredTextで書いていましたが、最近、JupyterLab を使うようになってきました。MiyadaikuはJupyter NotebookからHTMLを作成できるようになっており、私が書くブログ記事の執筆には最適なPythonの実行・ドキュメント環境です。
Notebook以外にも、Preview付きMar
思いつきをざっと書いて公開してしまうシリーズ2
Python 3.10 ではこれまでPythonのコンパイルの仕組みが変わり、従来の貧乏くさいLL(1)パーザから PEGパーザに切り替えられる予定になっています。
新パーザはすでにPython3.9に含まれていて、現在のPython 3.9b1でも試せるようになってますので、早速試してみました。
Pythonのプログラムを書いていて、辞書オブジェクトを書くの
思いつきをざっと書いて公開してしまうシリーズ
クリップボードにコピーした画像を、ファイルに出力するPython製コンソールコマンド pastecat を作りました。
画像を、PNG形式で from_clipboard.png
というファイルに出力するときは、
$ pastecat from_clipboard.png
とします。ファイル形式は、出力ファイルの拡張子で決定します。
画像を標準出力に出力するときは、-f
オプションでファイル形式を指定します。
$ pastecat -f JPEG > from_clipboard.jpeg
このサイトは、静的サイトジェネレータ Miyadaiku で作っています。
miyadaikuは以前からJupyter Notebook からページを作成する機能を持っていましたが、あたらしくMiyadaikuのテーマを作成し、普通のブログっぽくノートブックを表示できるようにしてみました。
CSSを多少いじくって、Jupyterっぽさを隠しています。
このページもノートブックです。
先日、雑誌 Software Designの記事 を書かせていただいたとき、数十ページの原稿をすべて Jup
Copyright © 2020 Atsuo Ishimoto
Powered by miyadaiku