SQLの窓

2014年04月09日


Python 3.4.0 : インストールと最初にする事( Windows )

Download Python から最新版をダウンロードしてインストールします。PATH 環境変数には登録されないので、自分で登録します。拡張子に対する定義は済まされています

コマンドプロンプトのインタープリタ(Python.exe)を、好きな場所のコマンドプロンプトで実行したい場合にのみ、PATH 環境変数に登録するといいと思いますが、パッチ処理を .bat から呼び出したいと思っているのなら、必ず登録します。

ソースコードは、UTF8Nで作成して実行しましたが、SHIFT_JIS のコマンドプロンプトには、きちんと日本語が表示されます。

0001.py ( utf8n )
import sys

# print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])


# 改行を出力しない
print("日本語表示", end="")
print("ソースは UTF8N", end="")
print("コマンドプロンプトはSHIFT_JIS", end="\n")

# デフォルトは改行表示
print("日本語表示")


# 標準エラー出力
print("エラー", file=sys.stderr)


str = "PATH環境変数は設定されません"
print("インストールで", str, sep="")


※ print関数は、カンマでつなげると連結されます
※ その際のセパレータを sep='' で指定します。この例は空文字
  ( つまり二つの文字列は連結されます )

※ import sys しないと、sys.stdout とか、sys.stderr とか動きません
※ sys.stdout と sys.stderr はリダイレクト先。
※ コマンドプロンプトから 0001.py 2> test.txt で、"エラー" は test.txt の中

※ 改行させずに、次の出力と連結させるには、end=""

※ sep= 、end= 、file= とかは、浮動パラメータで、順序は関係ありません
※ 最初の object, ... は、定置バラメータでその位置でのみ使えます
※ sys. は、Python マニュアルの sys (module) キーワードで参照


posted by lightbox at 2014-04-09 18:21 | Python | このブログの読者になる | 更新情報をチェックする

2010年06月21日


Python3.1 : URLを読み出して、バイナリのままファイル出力する

このサンプルでは、キャラクタセットの処理の一つとして使用していますが、
ファイルのダウンロードに使用します
0005.py ( utf8n )
#! /usr/bin/env python3.1

import urllib.request
import http.cookiejar

# Cookie handling for HTTP clients
# python312.chm::/library/http.cookiejar.html
cj = http.cookiejar.MozillaCookieJar()
opener = urllib.request.build_opener(
			urllib.request.HTTPCookieProcessor( cj )
		 )

# 最初の呼び出し
# ※ cookiejar を設定した opener で読みだす
try:
	print( "このヘッダーが送られます :" , opener.addheaders, end="\n\n" )
	response = opener.open("http://localhost/web/test/sv1.php")

# URL 関係のエラー処理
except urllib.error.URLError as e:
	print(e)
	exit()
# 一般のエラー処理
except Exception as e:
	print(e)
	exit()

# サーバーからの http ヘッダ
print( response.info() )

# バイナリとしての HTML ページを取得
html = response.read()

# html の キャラクタセット に合わせて decode して
# 文字列として取り込む
html_shift_jis = html.decode("shift_jis")

# そのまま、コマンドプロンプトへ出力
print( "-------------------------------------------------" )
print( html_shift_jis )
print( "-------------------------------------------------" )

# キャラクタセットを変換して出力
# ※ テキストのみ
print( html_shift_jis, file=open("html_shift_jis.txt","wt") )
print( html_shift_jis, file=open("html_euc_jp.txt","wt", encoding="euc_jp") )
# utf8n で出力されました
print( html_shift_jis, file=open("html_utf_8.txt","wt", encoding="utf_8") )

# バイナリの表示
print( "-------------------------------------------------" )
print( html )
print( "-------------------------------------------------" )

# バイナリのまま保存
# ※ キャラクタセットが解らない場合のファイル化
html_org = open("html_org.txt", mode='wb') 
html_org.write( html )

# クッキーを保存
# ※ cj.load( "ファイルのパス" ) が可能です
cj.save( "cookie_100621.sav", ignore_discard=True, ignore_expires=True )
Python3.1 マニュアル
The Python Standard Library ≫ 20. Internet Protocols and Support
20.22.2. FileCookieJar subclasses and co-operation with web browsers

The Python Standard Library ≫ 7. String Services ≫
7.6.3. Standard Encodings


posted by lightbox at 2010-06-21 16:08 | Python | このブログの読者になる | 更新情報をチェックする

2010年06月20日


Python3.1 : クッキーを保持して二つの URL にアクセスする

保存されるクッキーの形式は、「関連する記事」の、PHP でテストした cURL が保存する
形式とほぼ同じでした

▼ Python3.1
------------------------------------------------------------------------------------
    # Netscape HTTP Cookie File
    # http://www.netscape.com/newsref/std/cookie_spec.html
    # This is a generated file!  Do not edit.

localhost.local	FALSE	/web/test	FALSE		data	1234
localhost.local	FALSE	/web/test	FALSE		lightbox	winofsql

▼ PHP の cURL
------------------------------------------------------------------------------------
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

localhost	FALSE	/web/test/	FALSE	0	data	1234
localhost	FALSE	/web/test/	FALSE	0	lightbox	winofsql
------------------------------------------------------------------------------------

urllib.request.build_opener には、複数のハンドラを設定できます。
必要に応じて追加していく形になります( BASIC 認証や プロキシ等 )

HTTP ヘッダーの追加は、マニュアルにこっそり書かれていますが、
User-Agent: Python-urllib/3.1 は常にセットされるらしく、追加は
append メソッドで行います

関連する記事

VBScript/PHP クッキーデータが自動的に受け渡しされる事のテスト
VB.net : HttpWebRequest と HttpWebResponse でクッキーのやり取り
Python3.1 : mixi ボイスへ投稿
0004.py ( utf8n )
#! /usr/bin/env python3.1

import urllib.request
import http.cookiejar

# **********************************************************
# Cookie handling for HTTP clients
# python312.chm::/library/http.cookiejar.html
# **********************************************************
cj = http.cookiejar.MozillaCookieJar()
opener = urllib.request.build_opener(
			urllib.request.HTTPCookieProcessor( cj )
		 )

# **********************************************************
# 最初の呼び出し
# ※ cookiejar を設定した opener で読みだす
# **********************************************************
try:
	response = opener.open("http://localhost/web/test/sv1.php")
except urllib.error.URLError as e:
	print(e)
	exit()

html = response.read()

# **********************************************************
# サーバーからの http ヘッダ
# **********************************************************
print( response.info() )

# **********************************************************
# 内容
# **********************************************************
print( html.decode() )



# **********************************************************
# 2回目の呼び出し
# ※ cookiejar を設定した opener で読みだす
# ※ ヘッダーの追加は、opener.addheaders
# **********************************************************
opener = urllib.request.build_opener(
			urllib.request.HTTPCookieProcessor( cj )
		 )
try:
	opener.addheaders.append(('test-header', 'Python3.1'))
	response = opener.open("http://localhost/web/test/sv2.php")
except urllib.error.URLError as e:
	print(e)
	exit()

html = response.read()

# **********************************************************
# サーバーからの http ヘッダ
# **********************************************************
print( response.info() )

# **********************************************************
# 内容
# **********************************************************
print( html.decode() )

# **********************************************************
# クッキーを保存
# ※ cj.load( "ファイルのパス" ) が可能です
# **********************************************************
cj.save( "cookie_100620.sav", ignore_discard=True, ignore_expires=True )




posted by lightbox at 2010-06-20 19:34 | Python | このブログの読者になる | 更新情報をチェックする

Python3.1 : URLを読み出してファイルに出力

注意するのは、キャラクタセットの指定です。

※ Windows では、指定しない場合は SHIFT_JIS で出力されます
0003.py ( utf8n )
#! /usr/bin/env python3.1

import urllib.request

# **********************************************************
# ※ エラーをファイルに出力しています
# ※ file=object は、object に write メソッドが必要です
# ※ python312.chm::/library/functions.html#open
#
# ※ SSL が有効です
# **********************************************************
try:
	response = urllib.request.urlopen('https://mixi.jp/')
except urllib.error.URLError as e:
	print(e,file=open("error.log","at"))
	exit()

html = response.read()

# サーバーからの http ヘッダ
print( response.info() )

# **********************************************************
# ※ ログイン前のページをファイルに出力しています
# 
# ※ python312.chm::/library/codecs.html#standard-encodings
# ※ euc_jp | eucjp, ujis, u-jis 
# ※ mixi は、EUC-JP です
#
# ※ 出力される mixi_home.txt は、SHIFT_JIS になります
# **********************************************************
print( html.decode("euc_jp"),file=open("mixi_home_sjis.txt","wt") )

# **********************************************************
# そのまま EUC-JP で出力
# **********************************************************
print(
	html.decode("euc_jp"),
	file=open(
		"mixi_home_ujis.txt",
		"wt",
		encoding="euc_jp"
	)
)

関連する記事

Python3.1 : URL を読み出す( bytes から string )


タグ:Python
posted by lightbox at 2010-06-20 18:46 | Python | このブログの読者になる | 更新情報をチェックする

2010年06月19日


Python3.1 : URL を読み出す( bytes から string )

import urllib.request は、最新マニュアルの記述です
※ urllib2 は統合されています

マニュアル通りにすると、バイト表現になってそのままでは使えません。
正規表現に使うにも、いちいち b'文字列' とかする必要があるので
文字列に変換して使います。
0002.py ( utf8n )
#! /usr/bin/env python3.1

import urllib.request

# response は、これ専用の単純なストリームになるようで、
# readline() が使えます
# マニュアルの通りに e.reason を print するとエラーになります
try:
	response = urllib.request.urlopen('http://localhost/web/test/sjis.htm')
except urllib.error.URLError as e:
	print(e)
	exit()

html = response.read()

# その他のメソッド
# info は、サーバーからの http ヘッダ
print( response.info(), response.geturl() )


# そのまま print すると、b'..........' という bytes 表現になります
# sjis.htm は、shift_jis なので、decode("shift_jis")
print( html.decode("shift_jis") )

mk:@MSITStore:C:\Python31\Doc\python312.chm::/library/stdtypes.html#bytes.decode
上のパスは、windows にインストールされた chm を IE で見る為のものです

posted by lightbox at 2010-06-19 23:48 | Python | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり