Category Archives: python

「python開発」urllib2を使ってサイトのリソースを取得する

サンプルコード:
#!/usr/bin/env python
#
urlfile = urllib2.urlopen(‘http://www.XXX.com/’)
print “ドキュメント”, urlfile.info().getheader(“Content-Type”,””)
#結果:ドキュメント text/html

print “HTTP Response headers:”
print urlfile.info()
#結果:
#Document type is Date: Thu, 23 Mar 2014 15:13:29 GMT
#Content-Type: text/html; charset=UTF-8
#Server: Apache
#X-Powered-By: PHP/5.1.2-1.dotdeb.2
#Connection: close

「python学習」ftplibを通じてファイルを送信する

サンプルコード:
#!/usr/bin/env python

import ftplib # FTPモジュールをインポート
session = ftplib.FTP(‘ftp.arkgame.com’,’user_startnews24′,’pwd_startnews24′)#FTPサーバーへの接続

myfile = open(‘toto_startnews24.txt’,’rb’) # 送信ファイルを開く

session.storbinary(‘STOR toto.txt’, myfile) # フアイルを送信

myfile.close() #ファイルを閉じる
session.quit()

[python開発]pilモジュールを利用して2つの画像の類似を比較する

サンプルコード:
#!/usr/bin/python
# Filename: histsimilar.py
# -*- coding: utf-8 -*-

import Image

def make_regalur_image(img, size = (256, 256)):
return img.resize(size).convert(‘RGB’)

def split_image(img, part_size = (64, 64)):
w, h = img.size
pw, ph = part_size
assert w % pw == h % ph == 0
return [img.crop((i, j, i+pw, j+ph)).copy() \
for i in xrange(0, w, pw) \
for j in xrange(0, h, ph)]

def hist_similar(lh, rh):
assert len(lh) == len(rh)
return sum(1 – (0 if l == r else float(abs(l – r))/max(l, r)) for l, r in zip(lh, rh))/len(lh)

def calc_similar(li, ri):
# return hist_similar(li.histogram(), ri.histogram())
return sum(hist_similar(l.histogram(), r.histogram()) for l, r in zip(split_image(li), split_image(ri))) / 16.0

def calc_similar_by_path(lf, rf):
li, ri = make_regalur_image(Image.open(lf)), make_regalur_image(Image.open(rf))
return calc_similar(li, ri)

def make_doc_data(lf, rf):
li, ri = make_regalur_image(Image.open(lf)), make_regalur_image(Image.open(rf))
li.save(lf + ‘_regalur.png’)
ri.save(rf + ‘_regalur.png’)
fd = open(‘stat.csv’, ‘w’)
fd.write(‘\n’.join(l + ‘,’ + r for l, r in zip(map(str, li.histogram()), map(str, ri.histogram()))))
fd.close()
import ImageDraw
li = li.convert(‘RGB’)
draw = ImageDraw.Draw(li)
for i in xrange(0, 256, 64):
draw.line((0, i, 256, i), fill = ‘#ff0000’)
draw.line((i, 0, i, 256), fill = ‘#ff0000’)
li.save(lf + ‘_lines.png’)

if __name__ == ‘__main__’:
path = r’startnews24_image/startnews24_test%d/%d.JPG’
for i in xrange(1, 7):
print ‘startnews24_test_case_%d: %.3f%%’%(i, \
calc_similar_by_path(‘startnews24_image/startnews24_test%d/%d.JPG’%(i, 1), ‘startnews24_image/startnews24_test%d/%d.JPG’%(i, 2))*100)

# make_doc_data(‘startnews24_test/startnews24_pp/1.JPG’, ‘startnews24_test/startnews24_pp/2.JPG’)

「Python開発」reモジュールMatch Objectオブジェクトの利用方法

1.group([group1,…])
例:
>>> m=re.match(“(\w+) (\w+)”,”abcd efgh, chaj”)
>>> m.group()
‘abcd efgh’
>>> m.group(1)#
‘abcd’
>>> m.group(2)
‘efgh’
>>> m.group(1,2) #
(‘abcd’, ‘efgh’)
>>> m=re.match(“(?P<first_name>\w+) (?P<last_name>\w+)”,”sam lee”)
>>> m.group(“first_name”)
‘sam’
>>> m.group(“last_name”)
‘lee’

2.groups([default])
例:
>>> m=re.match(“(\d+)\.(\d+)”,”23.123″)
>>> m.groups()
(’23’, ‘123’)
>>> m=re.match(“(\d+)\.?(\d+)?”,”24″) #デフォルト”None”
>>> m.groups()
(’24’, None)
>>> m.groups(“0”)
(’24’, ‘0’)

3.groupdict([default])
例:
>>> m=re.match(“(\w+) (\w+)”,”hello world”)
>>> m.groupdict()
{}
>>> m=re.match(“(?P<first>\w+) (?P<secode>\w+)”,”hello world”)
>>> m.groupdict()
{‘secode’: ‘world’, ‘first’: ‘hello’}

4.split
例1:
>>> re.split(‘(\W+)’, ‘…words, words…’)
[”, ‘…’, ‘words’, ‘, ‘, ‘words’, ‘…’, ”]
>>> re.split(‘(\W+)’, ‘words, words…’)
[‘words’, ‘, ‘, ‘words’, ‘…’, ”]

例2:
>>> re.split(“\W+”,”words,words,works”,1)
[‘words’, ‘words,works’]
>>> re.split(“[a-z]”,”0A3b9z”,re.IGNORECASE)
[‘0A3’, ‘9’, ”]
>>> re.split(“[a-z]+”,”0A3b9z”,re.IGNORECASE)
[‘0A3’, ‘9’, ”]
>>> re.split(“[a-zA-Z]+”,”0A3b9z”)
[‘0’, ‘3’, ‘9’, ”]
>>> re.split(‘[a-f]+’, ‘0a3B9’, re.IGNORECASE)#re.IGNORECASEを利用
[‘0’, ‘3B9’]

5.re.findall(pattern, string[, flags])
例:
>>> re.findall(‘(\W+)’, ‘words, words…’)
[‘, ‘, ‘…’]
>>> re.findall(‘(\W+)d’, ‘words, words…d’)
[‘…’]
>>> re.findall(‘(\W+)d’, ‘…dwords, words…d’)
[‘…’, ‘…’]

6.subとsubn
例:
>>> re.sub(“\d”,”abc1def2hijk”,”RE”)
‘RE’
>>> x=re.sub(“\d”,”abc1def2hijk”,”RE”)
>>> x
‘RE’
>>> re.sub(“\d”,”RE”,”abc1def2hijk”,)
‘abcREdefREhijk’

>>> re.subn(“\d”,”RE”,”abc1def2hijk”,)
(‘abcREdefREhijk’, 2)

[python学習」randomモジュールの乱数を生成する方法まとめ

1.random()
乱数範囲: 0 <= n < 1.0
例:
>>> print random.random()
0.283212844881

2.uniform()
例:
>>> print random.uniform(1,10)
1.2558047703
>>> print random.uniform(10,1)
6.78930988147

3.randint()
#print random.randint(10, 20)

4.randrange()
形式 randrange([start],stop[, step])
例:random.randrange(10, 100, 2)

5.choice()
例:
print random.choice(“arkgame.com”)
print random.choice([“startnews24”, “is”, “a”, “it”, “site”])
print random.choice((“soft”, “code”, “in arkgame.com”))

6.shuffle()
形式 shuffle(x[,random]
例:
>>> p = [‘a’,’b’,’c’]
>>> random.shuffle(p)
>>> print p
[‘a’, ‘c’, ‘b’]

7.sample()
形式 random.sample(sequence,k)

>>> print random.sample([‘a_startnews24′,’b_startnews24′,’c_startnews24′,’d’],3) [‘a_startnews24’, ‘b_startnews24’, ‘c_startnews24’]

「python開発」osモジュールの使い方、ファイル、ディレクトリを作成など

1.pythonプロセス
os.listdir(dirname)
os.getcwd()
os.getpid()
os.chdir(dirname)
os.name
os.getenv()
os.system()  例 os.system(‘ls -a’)
os.path.split()

コード下記:
>>>> os.path.split(‘/a/b/c/startnews24.txt’)
(‘/a/b/c’, ‘startnews24.txt’)
os.path.isfile()とos.path.isdir()
os.path.exists()
>>> os.path.exists(‘a/b/a.txt’)
False

2.ファイルオブジェクトを作成
os.fdopen()
os.popen()

3.ファイルを操作
os.close(fd)
os.open(file,flags[,mode])
os.read(fd,n)
os.write(fd,str)

4.ファイルとディレクトリ
os.access(path,mode)
os.chdir(dirname)
os.getcwd()
os.chmod(path, mode)
os.chown(path, uid, gid)
os.listdir() 例 os.listdir(‘./’)
os.mkdir(path[,mode])
os.rmdir(path)
os.remove() ファイルを削除

5.プロセス管理
os.execl(path, arg0, arg1,…)
OK:os.execl( “/usr/bin/python “, “python “, 'test.py ', 'i ')
NG:os.execl( "/usr/bin/python ", "test.py ",
‘i ‘)
os.exec*()
6.システム情報
os.curdir
os.pardir
os.sep linux–‘/’,windows–‘\’
os.linesep Windows–‘\r\n’,Linux–‘\n’ Mac–‘\r’。

7.miscellaneous funciton
os.urandom(n)

「python開発」ftplibとos,socketモジュールを利用してファイルをダウンロードする

コード下記:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import ftplib
import os
import socket

HOST = ‘ftp.mozilla.org’
DIRN = ‘pub/mozilla.org/webtools’
FILE = ‘bugzilla-3.6.9-to-3.6.10-nodocs.diff.gz’

def writedata(data):
f = open(FILE,’wb’)
try:
f.write(data)
finally:
f.close()

def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror):
print ‘ERROR:cannot reach ” %s”‘ % HOST
return
print ‘***ホストに接続 “%s”‘ % HOST

try:
f.login()
except ftplib.error_perm:
print ‘エラー: 匿名でログインできない’
f.quit()
return
print ‘*** Logged in as “anonymously”‘

try:
f.cwd(DIRN)
except ftplib.error_perm:
print ‘ERRORL cannot CD to “%s”‘ % DIRN
f.quit()
return
print ‘*** Changed to “%s” folder’ % DIRN

try:
#retrbinary()を呼び出す
f.retrbinary(‘RETR %s’ %FILE, writedata)
except ftplib.error_perm:
print ‘エラー: ファイルを読み取ることができません “%s”‘ %FILE
os.unlink(FILE)
else:
print ‘***ダウンロード”%s” to CWD’ % FILE

f.quit()
return

if __name__ == ‘__main__’:
main()

Python3でexcelファイルからテキストファイル(*txt)に変換するサンプルコード

サンプルコード:
import os
import glob
import xlrd3 as xlrd
import re

path = os.getcwd()
files = glob.glob(‘sourceExcel/*’)

for file in files:
wb = xlrd.open_workbook(file)

for sheetName in wb.sheet_names():
txtFile = open(‘outputTxts/’ + sheetName + ‘.txt’, mode=’w’, encoding=’utf-8′)
sheet = wb.sheet_by_name(sheetName)
for rownum in range(sheet.nrows):
v1 = sheet.cell(rownum, 0).value
if (type(v1) == float):
v1 = str(v1)
v1 = re.sub(‘\.0*$’, “”, v1)
v1 = v1.rstrip()
v2 = sheet.cell(rownum, 1).value
if (type(v2) == float):
v2 = str(v2)
v2 = re.sub(‘\.0*$’, “”, v2)
v2 = v2.rstrip()
dataStr = v1 + ‘=’ + v2 + ‘\n’
txtFile.write(dataStr)
txtFile.close()

Python3でテキストファイル(*txt)からexcelファイルに変換するサンプルコード

サンプルコード:
import os
import glob
path = os.getcwd()
files = glob.glob(‘../trunk/Resource/lang/ja_startnews24/*.txt’)
import xlwt3

if len(files) > 0:
wb = xlwt3.Workbook()
for file in files:
fileName = file.split(‘\\’)[1].split(‘.’)[0]
print(fileName)
ws = wb.add_sheet(fileName)
with open(file, encoding=’utf-8′) as a_file:
line_number = 0
for a_line in a_file:
a_line = a_line.rstrip()
mark = a_line.find(“=”)
ws.write(line_number, 0, a_line[0:mark])
ws.write(line_number, 1, a_line[mark+1:])
ws.col(0).width = 8000
ws.col(1).width = 40000
line_number += 1
a_file.close()
wb.save(‘langPack_ja_startnews24.xls’)

「Python入門」Pythonでメールを送信するサンプルコード

サンプルコード:
__author__ = ‘gg88’

import email,sys,os
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEImage import MIMEImage

SENDER = ‘username@arkgame.com’
SMTPSERVER = ‘smtpcloud.sohu.com’
#RECEIVERS = ”
USERNAME = ‘username@arkgame.com’
APIKEY = ‘******’

def sendMail(subject, receivers, cc, content, atts):
msg = MIMEMultipart(‘related’)
msg[‘Subject’] = unicode(subject, “UTF-8″)
msg[‘From’] = SENDER
msg[‘To’] = receivers
msg[‘Cc’] = cc

#メール内容
if os.path.isfile(content):
if(content.split(‘.’)[-1]==’html’):
cont = MIMEText(open(content).read(),’html’,’utf-8′)
else:
cont = MIMEText(open(content).read(),’plain’,’utf-8′)
else:
cont = MIMEText(content, ‘plain’,’utf-8′)
msg.attach(cont)

#添付ファイルの処理
if atts != -1 and atts != ”:
for att in atts.split(‘,’):
os.path.isfile(att)
name = os.path.basename(att)
att = MIMEText(open(att).read(), ‘base64’, ‘utf-8’)
att[“Content-Type”] = ‘application/octet-stream’
#utf-8
att[“Content-Disposition”] = ‘attachment; filename=%s’ % name.decode(‘utf-8’).encode(‘gbk’)
msg.attach(att)

smtp = smtplib.SMTP()
smtp.connect(SMTPSERVER)
smtp.login(USERNAME, APIKEY)
for recev in receivers.split(‘,’):
smtp.sendmail(SENDER,recev, msg.as_string())
for c in cc.split(‘,’):
smtp.sendmail(SENDER,c, msg.as_string())
smtp.quit()

def main():
print “start send mail[sendmail.py]”
subject = sys.argv[1]
receivers = sys.argv[2]
#cc = sys.argv[3]
leng = len(sys.argv)
if leng == 3:
cc = “”
content = “”
atts = -1
elif leng == 4:
print “The parameters is not currect!”
sys.exit(0)
elif leng == 5:
cc = sys.argv[3]
content = sys.argv[4]
atts = -1
elif leng == 6:
cc = sys.argv[3]
content = sys.argv[4]
atts = sys.argv[5]
sendMail(subject, receivers, cc, content, atts)
print “finish send mail[sendmail.py]”

if __name__==’__main__’:
main()