python
他の誰かが作成した検索プログラムやストアドファンクションを 修正させられる時に、 検索対象のテストデータとか プログラムに渡す検索パラメータのテスト用データを 必要なパターン分作成してテストするのだけど、 抜け漏れのないテストデータを簡単に生成…
はてなカウンターの「ログ」画面で ログを月単位でダウンロードできることを発見したので、 ダウンロードしたログを分析用にデータベースに保存するスクリプトを作成する。
過去に下記のような、ファイルを複数に分割する方法について記事を書いた: blog.honjala.net この記事に書いたコードをもう少しエレガントに書けないものか、 と方法を調べていて、 Pythonのジェネレータが使えそうだったので色々試してみた。
稼働中のWebアプリのデータベースに定期的にアクセスして データの状態をチェックしたい、でもデータベースには 外部から直アクセスできないようになっているので、 SSHトンネル経由でないとアクセスできない、という場合。 A5:SQLなりpgAdminなり最近のDBア…
だいぶ前に書いた下記の記事 blog.honjala.net の内容がPython3で動かないようなので、 Python3対応しつつ、もう少し使えるように書きなおしてみる。
SQL Serverからエクスポートしたrpt形式ファイルを渡され、 CSVに変換してくれと依頼される。 「あれ、SQL Server Management Studioに 直接CSV出力する機能ありませんでしたっけ?」 と確認しても「しらん。やれ。」と言われる。 そんなよくある状況で助け…
毎朝出社時に社員カードで入室し、 入室したのと同じカードで出勤打刻をするのだが、 入って数歩のところにタイムレコーダーが置いてあるにも関わらず、 打刻が漏れることがある。 どうやら、 雨の日に途中で傘を置いたり(傘立てはドアとタイムレコーダーの…
Python手軽でいいね、ってことで 最近はJavascriptよりもPythonでスクリプトを書いている。 今日もパフォーマンステスト用に大量データを登録する必要があったので SQLAlchemyを使ってスクリプトを書いてみた。 Python3で動作確認済み。
たまにはPythonを使っておこう、 ということでここ数日シェル環境としてiPythonを使っている。 Jupyter and the future of IPython — IPython ほぼPython言語としての機能は使っていないのだけど、 ちょっとした計算をしたりするにはなかなか便利だ。 せっか…
AmazonのAPIを触っていて、レスポンスとして返ってきた(XMLから生成された)オブジェクトから値を取得する際にいちいちhasattrでチェックするのが面倒だったので、そのパスがなければデフォルト値を返す関数を作った。 見つけられなかったけど、標準ライブ…
職場はメイン言語がJavaなので、プロジェクトでPythonを使う機会は ないのですが、キャプチャを撮ったりExcelを操作したりする作業を 「こっそり自動化」するスクリプトをPythonで書いたりしています。 最近はSE作業で何かとExcelを使うことが多いので、 Exc…
昨日の続きでScrapyをさわる。 ちなみに、昨日Linux環境にインストールする時は苦労したが、 今日Windows環境にpipでScrapyをインストールしてみたら、 何ひとつひっかからずにインストールが完了した。 ともあれ、ようやくScrapyをインストールできたので、…
ひとつPythonでWebスクレイピングでもやってみようかとScrapyをVPS環境に入れてみたところ、インストールするだけで手間取ってしまった。 環境はPython2.7.3で、インストールしてから特に何も設定していない状態。 本サイトに書いてある通り、まずは pip ins…
作業履歴が入ったデータベーステーブルから、 案件情報を行に、作業内容(「設計」とか「PG」とか)を列に、 案件別作業内容別合計時間を値として持つピボットテーブルを作成して Excelで確認する必要があったので、以前から興味のあったPandasを 使ってスク…
フォルダを指定してその中のファイルのファイル名の一部を削除するちょっとしたスクリプト。子フォルダの再帰処理はしない。 001_(hoge).txt、002_(fuga).txtなどのファイルを001_hoge.txt、002_fuga.txtに一括変換したい時なんかに使えるよう、正規表現でパ…
自分のブックマークを色々分析できるように、PocketのOptionsページから エクスポートしたブックマークのリストをデータベースに取込む。 PythonでMySQLdbとBeautifulSoup4を使用。 テーブル CREATE TABLE bookmarks ( id integer NOT NULL AUTO_INCREMENT, …
こちらを参考にしました http://www.freia.jp/taka/blog/356 import re f = open("error_log") pattern = re.compile(r"\[client (?P<ip>[0-9\.]+)\]") ips = {} for line in f: m = pattern.search(line) if m: ip = m.group("ip") ips[ip] = ips.get(ip, 0) + </ip>…
FoursquareのAPIを使って場所系のサービスでも作ってやろう、 と思い立って作っている。 APIドキュメントのRate Limitingを読んだところ、 認証済みの場合は認証ユーザー毎、認証していない場合はIPアドレス毎に 1メソッドにつき1時間200アクセスまでと制限…
分かりにくいタイトルだけど。 1つのファイル内に同じパターンにマッチする箇所が複数ある場合に、 個々の箇所でデータを名前つきグループ化して抽出したい場合に使える。 例えば、HTMLファイルの中からテーブルの各行から個々の列の値を取り出す時とか。 パ…
デコレータ便利。この例では呼び出しと引数だけをログしてるけど、 処理にかかった時間の計測とか、色々できそう。 log.py import logging def log_api_call(func): def decorator(*args, **kwargs): logging.info("API: %s called. params: %s %s" % (func.…
一応動くサンプル。あんまりテストしてないので、取得できないパターンはあるかも。 覚えておきたいのはxpathの設定方法で、 どうやら //head/title/text() と書くとたまにうまくタイトルが取得できない場合があるようで、 そんな場合でも //title/text() と…
TumblrのRSS解析を試みていて、そこでQuote登録した文字列を検索して変換しようとしたところ、苦労したのでメモ。 RSSのソースを見たところ、引用した部分は二重引用符で囲まれているようだったので、普通にダブルクオートで検索してみたけどうまくヒットし…
各サービスのAPIでも取得できるようだけど、一応こんな方法でもできた、ということで。 import urllib2 def get_real_url(url): r = None try: r = urllib2.urlopen(url) except: pass if r: url = r.geturl() return url long_url = get_real_url("短縮URL"…
Honjalaに新規登録されたブックマークをTwitterに自動投稿するスクリプトを書いた。 ブログやブックマークをTwitterに自動投稿する機会は今後もありそうなのでメモ。 準備 Twitterとbitlyにアカウントをあらかじめ作成しておく。 PythonからTwitter APIを利…
毎回忘れて探し回るので、ここに書いておく value = then_value if predicate else else_value こちらより http://www.shido.info/py/python10.html
また使いそうなので記録。指定ディレクトリ内の.svnやらCVSやらを一括削除するためのスクリプト。 バグがあるかもしれないので、削除処理をコメントにして削除対象を確認できるようにしておく。 recursive_delete.py # -*- coding: utf-8 -*- import os impo…
日本語が化けて大変苦労したのでメモ。 結論として、XML(またはHTML)を解析する前にunicode関数に通しておく、 ということで良いのかな? 相変わらず文字コード関連はよく分からない。 from urllib import urlopen from lxml import etree html = urlopen(…
今後も使えそうなのでメモ。 import re from django.core.exceptions import ObjectDoesNotExist from sample.web.models import WebPage PATTERN = r'<a href="%(dummy_url)s" >%(real_url)s</a>' HTML_TEMPLATE = re.compile(r"((http|https)://[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)"…
WindowsのコマンドプロンプトをPythonで拡張するwxPythonアプリケーションを作った。 Linuxシェルでも動くかもしれないが、試していない。 pythonスクリプトと、シェルコマンドが使える。コマンドを入力すると、 最初に指定ディレクトリ内のpythonスクリプト…
これもちょっと必要だったので作成したスクリプト。 秀丸やgVimで開けないほど大きいファイルを分割する。 split_file.py # -*- coding: utf-8 -*- in_file_name = "verybigfile.log" out_file_name_template = "splitted_%d.log" max_lines = 1000000 split…