javascript:(()=>{f=(d)=>`${d.getFullYear()}${('0'+(d.getMonth()+1)).slice(-2)}${('0'+(d.getDate())).slice(-2)}`;d=new Date();y=new Date();y.setDate(d.getDate() - 1);location.href=`https://analytics.google.com/analytics/web/#/re
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}`)'
Pythonには、オブジェクトにある名前の属性が存在するかどうかをチェックする hasattr という組み込み関数があります。
例えば、リストオブジェクトに append
という属性が存在するかどうか確認するときは、次のようにかきます。
L = []
print(hasattr(L, 'append'))
print(L.append)
リストオブジェクトには append
という属性が存在し、メソッドだということ
JupyterLabのファイル一覧からHTMLファイルを開くと、デフォルトではHTMLがレンダリングされて表示されます。
私は通常JupyterLabをエディタとして利用しているので、この動作はちょっと不便です。HTMLファイルを編集するのに、ファイル名を右クリックして Open with | Editor
を選択しなければなりません。
クリックするだけで編集画面を立ち上げるには、以下の設定を行います。
メニューバーの Setting から、 Advanced Settings Edito
テスト用に適当なadminユーザ登録したいだけなのに、パスワードが甘いだのメールアドレスも入れろだの怒られてムカついたときに。
python manage.py shell -c 'from django.contrib.auth.models import User;User.objects.create_superuser("admin", "", "pass")'
先日、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'])
となり、数が多いとちょっと面倒になります。
先日から作りかけだったRaindrop.ioのPython API、久しぶりに機能追加しました。Webアプリケーションなどでも使えるように、OAuth2で認証して、トークンのリフレッシュなんかもできるようになりました。
Flaskのサンプルアプリケーションはこちら
ほんらい、どってことない作業のハズで、requests-oauthlib を使ってサクッと終了する予定でした。
しかし、どうもリフレッシュがうまく動かない。requests-oauth
先日作成して JupyterLabに送ったパッチ がリリースされていたので、ちょっと紹介します。
これまで、macOS上のブラウザでJupyterLabのターミナルを使うとき、option+f などの、Optionキーを使ったバインディングが効きませんでした。「単語右」のつもりで ⌥f を入力すると、
ƒ
などと言う文字が出てきて、大変不愉快でした。
しかし、このパッチ が取り込まれた現在のJupyter Labでは、OptionキーをMetaキー
これまで、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
ちょっとした実験で、自宅から外部のサーバとTCP接続を試みたところ、どうもうまくつながらなくて往生してました。接続先サーバのFirewallをすべて取っ払っても届きません。
しばらく苦戦した挙げ句、ためしに他のサーバから接続してみると成功。おお?と思って、自宅のPCから試すとつながらない。自宅の回線になんらかの制限がかかっているようなので、別のポートを試してみたらあっさりつながりました。
で、自宅の環境を確認してみると、AtermもNTT Fletsのルータもデフォルトでいくつかポートを制
GithubのProfile画面 に自分の好きなREADME.mdファイルを表示できる、という話を見かけて、試してしました。ちょっと前に試したときには、自分のアカウントではこの機能を使えなかったようですが、いつの間にか使えるようになっていました。
Githubで自分のアカウント名と同じ名前のリポジトリ(私の場合なら atsuoishimoto
) を作成し、つぎのように表示されれば機能が有効になっているようです。
作成したリポジトリに README.md という名前
Flex 絵文字ビルダー というのを作りました。
SlackやDiscordにカスタム絵文字として登録して、リアクションに使う画像を生成するツールです。こんな画像を作れます。
最初はこんなツールを作るつもりではなく、 どっかで<svg>
要素の中にHTMLを記述して、画像を <img>
要素に表示する、というコードを見かけて、自分で実験するためのコードでした。
こんな感じで <svg>
を作っておいて、
<svg id="svg">
<foreignObject width="128px" height=
pythonのslackclientで非同期タスクを実行したらValueErrorになった話 で、たぶん asyncioのtaskを勘違いしてる気がするので簡単に解説。
要は asyncio.run にコルーチンではなくてTaskを渡したらエラーになった、という話ですが、このページでは、
Taskオブジェクト(asyncioが内部的にloopに委ねるときにwrapするオブジェクト)
と書かれていて、Taskオブジェクトをちょっと誤解している感じがします。このTaskの役割を理解したら納得がいくのではないかと思います。
まず
macOSで、デフォルトの PATH
はどうやって決まってるんだろうか?
macOS Catalina 10.15.5で /etc/profile
を見ると、こんな感じになっている
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
f
管理者として実行してください。
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
いろんなプログラミング言語で、「宣言」と「定義」という用語が出てきます。
C言語などの用語だと、宣言(declaration) というのは、関数や変数の型などの情報を指定することを指します。
Pythonでは、global
とか nolocal
とかが宣言にあたります。
def func():
global VAR # 変数VAR はグローバルと 「宣言」
do_something(VAR)
定義(definition) は、実際に変数などの実体を作成することです。Pythonだと、var=100
とかになります。
var = 100 # 変
Python.jp Discordサーバを始めてから、早いものでもう2年ほど経ちました。登録者は2700名ほどで、初心者の質問なんかもちょくちょく流れてきます。
で、結構いろんな質問を見てるんですが、初心者はもちろん、プログラミングを始めてからけっこうたつような人でも、質問の内容がどうも怪しい、という人がいます。コンピュータやプログラミングの知識以前に、なにか問題を解決するときに、解決するための基礎的な手順ができていない感じの人たちです。プログ
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
さしあたって、Python の小ネタをどうぞ
Python 3.8.2 (default, Mar 11 2020, 00:29:50)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
フリープログラマ。python.jp 管理人。開発・執筆・講演など、お仕事お待ちしております。
Copyright © 2020 Atsuo Ishimoto
Powered by miyadaiku