2011年7月9日土曜日

京都市の通り名住所(3) 南北の通り

京都市内中心部の通りには、東西の通りと南北の通りがあり、それぞれにわらべ歌があります。
今回は南北の通り名のわらべ歌です。東から順に歌っていきます。
(なお、わらべ歌にない通り名でも住所表記に使うことがあります)


1.歌詞
○南北の通り名のわらべ歌(通称:寺御幸 てらごこ)
てら ごこ ふや とみ やなぎ さかい
たか あい ひがし くるまやちょう
からす りょうがえ むろ ころも
しんまち かまんざ にし おがわ
あぶら さめがいで ほりかわのみず
よしや いの くろ おおみやへ
まつ ひぐらしに ちえこういん
じょうふく せんぼん はてはにしじん


2.実際の通り名
寺町通り (てらまちどおり)
御幸町通り(ごこまちどおり)
麩屋町通り(ふやちょうどおり)
富小路通り(とみのこうじどおり)
柳馬場通り(やなぎのばんばどおり)
堺町通り (さかいまちどおり)
高倉通り (たかくらどおり)
間之町通り(あいのまちどおり)
東洞院通り(ひがしのとういんどおり)
車屋町通り(くるまやちょうどおり)
烏丸通り (からすまどおり)
両替町通り(りょうがえちょうどおり)
室町通り (むろまちどおり)
衣棚通り (ころものたなどおり)
新町通り (しんまちどおり)
釜座通り (かまんざどおり)
西洞院通り(にしのとういんどおり)
小川通り (おがわどおり)
油小路通り(あぶらのこうじどおり)
醒ケ井通り(さめがいどおり)
堀川通り (ほりかわどおり)
葭屋町通り(よしやまちどおり)
猪熊通り (いのくまどおり)
黒門通り (くろもんどおり)
大宮通り (おおみやどおり)
松屋町通り(まつやちょうどおり)
日暮通り (ひぐらしどおり)
智恵光院通り(ちえこういんどおり)
浄福寺通り(じょうふくじどおり)
千本通り (せんぼんどおり)
※西陣(にしじん)は地域名です。通り名ではありません。


3.音声
京美人三人娘が唄う京都の通り名の唄(京都修学旅行ワンダーランド)
地元の旅館関係者団体である、近畿日本ツーリスト協定旅館ホテル連盟教育旅行部会京都地区会のサイトです。
「南北の通り名の唄」の「聞く」をクリックします。


京都数え歌(YouTube:bonten79488さんの投稿)
上記と同じ音源のようです。

寺御幸のわらべ歌(京都銀行のサイト)
「唄を聴く」をクリックします。クリックしても聞こえない場合はRealPlayer形式の音声ファイルを再生できるソフトが必要です。

5.通りの位置の地図
 以下が秀逸です。
京都通り名マップ(株式会社ジオセンスのサイト)
一覧で通り名を選ぶとGoogleMAPに表示されます。

6.参考
 全体の説明は以下が詳しいです。
京都市内の通り(wikipedia)

2011年7月2日土曜日

python:ログ出力(2)

ログ出力について、簡単なクラス化をしてみました。
python標準のロギング機能はバージョン2.3以降使用可能です。

#
# -*- coding:sjis -*-
#
import os,sys,logging

#ログ出力クラス
class LogW():
 """
 Properties:
  path: ログファイル名
  Logger:  ロガー(ログ割振り機構)
 Attention:
  最低メッセージレベル以上のメッセージをログや画面に出力する。
 """
 def __init__(self, sLog="", bDel=True, bLogLV=10, bGamenLV=20):
  """コンストラクタ
  Args:
   sLog: ログファイルフルパス。未指定時はソース".py"→".log"
   bDel: 初期既存時削除か(bool)
   bLogLV: ログファイル出力対象の最低メッセージレベル
   bGamenLV: 画面表示対象の最低メッセージレベル
  Attention:
   レベ:0=NOTSET,10=DEBUG,20=INFO,30=WARNING,40=ERROR,50=CRITICAL
  """
  #ログファイル名
  if sLog: self.path = sLog
  else: self.path = sys.argv[0][:-3]+".log" #".py"→".log"
  if bDel and os.path.isfile(self.path): os.remove(self.path)
  #レベル名称の変更
  for level, name in zip([10,20,30,40],["_","I","W","E"]):
   logging.addLevelName(level, name)
  #ロガー(ログ割振り機構)
  self.Logger = logging.getLogger("")
  #ログファイルのハンドラー
  self.logfilehdlr = logging.FileHandler(self.path)
  self.Logger.addHandler(self.logfilehdlr)
  #画面のハンドラー
  self.consolehdlr = logging.StreamHandler()
  self.Logger.addHandler(self.consolehdlr)
  #ルートロガーは全メッセージが通るようにしておく
  logging.root.setLevel(logging.NOTSET)
  #出力レベルの設定
  self.setlevel(bLogLV, bGamenLV)

 #デストラクタ
 def __del__(self):
  self = None

 def setformat(self, T=True, V=False):
  """メッセージ書式の設定
  Args:
   T: 日時出力(bool)
   V: レベル名称出力(bool)
  """
  s = ""
  if T: s = "%(asctime)s "
  if V: s+= "%(levelname)s "
  s+= "%(message)s"
  formatter = logging.Formatter(s, "%Y/%m/%d %H:%M:%S")
  self.logfilehdlr.setFormatter(formatter)
  self.consolehdlr.setFormatter(formatter)

 def setlevel(self, iLogV=10, iGamenV=20):
  """出力レベルの設定
  Args:
   iLogV: ログファイル出力対象の最低メッセージレベル
   iGamenV: 画面表示対象の最低メッセージレベル
  Attention:
   レベ:0=NOTSET,10=DEBUG,20=INFO,30=WARNING,40=ERROR,50=CRITICAL
  """
  self.logfilehdlr.setLevel(iLogV)
  self.consolehdlr.setLevel(iGamenV)

 def I(self, msg="", T=True, V=False, G=True, L=True):
  """情報レベルメッセージの出力
  Args:
   msg: メッセージ
   T: 日時出力(bool)
   V: レベル名称出力(bool)
   G: 画面出力(bool)
   L: ログ出力(bool)
  """
  if not G: self.setlevel(iGamenV=100) #画面出力可否
  if not L: self.setlevel(iLogV=100)
  self.setformat(T, V)
  self.Logger.info(msg)
  self.setlevel() #画面出力可否、ログ出力可否をクリア

if __name__=="__main__":
 log = LogW()
 log.I("a:日時出力、ログ抑止、画面出力",L=False)
 log.I("b:日時出力、ログ出力、画面抑止",G=False)
 log.I("c:日時抑止、ログ出力、画面出力",T=False)
 log.I("d:日時出力、ログ出力、画面出力")
 log.setformat(V=True) #レベル名称出力可
 log.Logger.info("情報レベル")
 log.Logger.warning("警告レベル")
 log = None

----------

結果

○画面(標準出力)
ケースa、c、dを出力。

2011/07/02 07:45:27 a:日時出力、ログ抑止、画面出力
c:日時抑止、ログ出力、画面出力
2011/07/02 07:45:27 d:日時出力、ログ出力、画面出力
2011/07/02 07:45:27 I 情報レベル
2011/07/02 07:45:27 W 警告レベル



○ログファイル
ケースb、c、dを出力。2011/07/02 07:45:27 b:日時出力、ログ出力、画面抑止
c:日時抑止、ログ出力、画面出力
2011/07/02 07:45:27 d:日時出力、ログ出力、画面出力
2011/07/02 07:45:27 I 情報レベル
2011/07/02 07:45:27 W 警告レベル


なお、関係する記事は以下です。
python:ログ出力