Category Archives: python

「Python入門」ソケット(socket)通信プログラム

1.サーバー側
# socket_server.py

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((”,8089))
while True:
# Receive up to 1,024 bytes in a datagram
data, addr = s.recvfrom(1024)
print “Received:”, data, “from”, addr

2.クライアント側
# socket_client.py

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
port = 8089
host = “localhost”
while True:
msg = raw_input(‘メッセージを入力してください:’)
s.sendto(msg, (host, port))

「Load Crypto.Cipher.ARC4 Failed, Use Pure Python Instead.」解決対策

解決方法:
Download get-pip.py (https://bootstrap.pypa.io/get-pip.py)

sudo python get-pip.py

pip install pycrypto

Done!

「python入門」ディスクI/O監視ツールiotopのインストール、設定

1.インストール
yum install iotop
2.iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
22294 be/4 nginx 0.00 B/s 6.78 K/s 0.00 % 0.00 % nginx: wo~er process
16818 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld –~mysql.sock
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
6 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0]
7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuset]
8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper]
……
3.操作例
$ sudo iotop -b -d 1 -n 5 -o -u mongod -P -p 1524 -qqq
1524 be/4 mongod 0.00 B/s 527.27 K/s 0.00 % 0.54 % mongod -f /etc/mongod.conf
1524 be/4 mongod 0.00 B/s 566.84 K/s 0.00 % 1.40 % mongod -f /etc/mongod.conf
1524 be/4 mongod 0.00 B/s 766.42 K/s 0.00 % 0.70 % mongod -f /etc/mongod.conf
1524 be/4 mongod 0.00 B/s 946.21 K/s 0.00 % 0.37 % mongod -f /etc/mongod.conf

4.説明
-n リフレッシュ回数
-d リフレッシュ間隔時間
-P プロセスだけではなく、スレッドを表示
-p 指定されたプロセスまたはスレッドの監視
-k KBでI/O帯域幅を使用
-u 指定されたユーザI/o操作を監視
-t 各行にはタイムスタンプを出力

pythonでsqlites3を利用する

pythonコード:
import sqlite3
mysqldb=sqlite3.connect(r”C:\Users\Administrator\Desktop\startnews24_sqlite.db”)
mysqldb.close()

pythonでBaseHTTPServerサンプル

pythonコード:

#!/usr/bin/python
#coding=utf-8

from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler

import time

starttime=time.time()

class MyHandler(BaseHTTPRequestHandler):
# ”’Definition of the request handler.”’
def _writeheaders(self,doc):

if doc is None:
self.send_response(404)
else:
self.send_response(200)

self.send_header(“Content-type”,”text/html”)
self.end_headers()

def _getdoc(self,filename):
”’Handle a request for a document,returning one of two different page as as appropriate.”’
if filename == ‘/’:
return ”’
<html>
<head>
<title>BaseHTTPServer</title>
<script type=”text/javascript”>
//alert(“hello”);
</script>
</head>

<body>
This is a sample page.You can also look at the
<a href=”stats.html”>Server statistics</a>.
</body>
</html>
”’
elif filename == ‘/stats.html’:
return”’
<html>
<head>
<title>統計</title>
</head>

<body>
this server has been running for %d seconds.
</body>
</html>
”’%int(time.time()-starttime)
else:
return None

def do_HEAD(self):
”’Handle a request for headers only”’
doc=self._getdoc(self.path)
self._writeheaders(doc)

def do_GET(self):
”’Handle a request for headers and body”’
print “Get path is:%s”%self.path
doc=self._getdoc(self.path)
self._writeheaders(doc)
if doc is None:
self.wfile.write(”’
<html>
<head>
<title>見つかりません</title>
<body>
The requested document ‘%s’ was not found.
</body>
</head>
</html>
”’%(self.path))

else:
self.wfile.write(doc)

#オブジェクトとサーバーの要求を作成
serveaddr=(”,8000)
httpd=HTTPServer(serveaddr,MyHandler)
print “Base serve is start add is %s port is %d”%(serveaddr[0],serveaddr[1])
httpd.serve_forever()

Pythonで日付変換操作サンプル

1.時間文字列をタイムスタンプに変換される
方法:
a = “2013-10-10 23:40:00”
時間配列に変換
import time
timeArray = time.strptime(a, “%Y-%m-%d %H:%M:%S”)
タイムスタンプに変換
timeStamp = int(time.mktime(timeArray))
timeStamp == 1381419600
2.文字列の書式設定の変更
例 a = “2013-10-10 23:40:00”,=>a = “2013/10/10 23:40:00”
方法:最初配列に変換してから、他のフォーマットに変換
timeArray = time.strptime(a, “%Y-%m-%d %H:%M:%S”)
otherStyleTime = time.strftime(“%Y/%m/%d %H:%M:%S”, timeArray)

3.タイムスタンプは指定された形式の日付に変換:
方法1:
localtime()を使用して時間配列に変換してから、必要なフォーマットを生成

timeStamp = 1381419600
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime(“%Y-%m-%d %H:%M:%S”, timeArray)
otherStyletime == “2013-10-10 23:40:00”

方法2:
import datetime
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime(“%Y-%m-%d %H:%M:%S”)
otherStyletime == “2013-10-10 23:40:00”

4.現在の日付と時刻を取得して指定されたフォーマットに変換
方法1:
import time
now = int(time.time()) -> 現在時刻のタイムスタンプを取得
他の日付形式に変換 例:”%Y-%m-%d %H:%M:%S”
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime(“%Y-%m-%d %H:%M:%S”, timeArray)

方法2:
import datetime
now = datetime.datetime.now() -> 時間配列形式
指定された形式に変換される
otherStyleTime = now.strftime(“%Y-%m-%d %H:%M:%S”)

5.  3日前の時間を取得
import time
import datetime
日付形式の配列を取得
threeDayAgo = (datetime.datetime.now() – datetime.timedelta(days = 3))
タイムスタンプに変換:
timeStamp = int(time.mktime(threeDayAgo.timetuple()))
他の文字列形式に変換:
otherStyleTime = threeDayAgo.strftime(“%Y-%m-%d %H:%M:%S”)
注意:timedelta()のパラメータ:days,hours,seconds,microseconds

6.タイムスタンプを設定して、数日前の時間を計算:
timeStamp = 1381419600
datetimeに変換
import datetime
import time
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
threeDayAgo = dateArray – datetime.timedelta(days = 3)

Pythonで日付変換操作サンプル

1.時間文字列をタイムスタンプに変換される
方法:
a = “2013-10-10 23:40:00”
時間配列に変換
import time
timeArray = time.strptime(a, “%Y-%m-%d %H:%M:%S”)
タイムスタンプに変換
timeStamp = int(time.mktime(timeArray))
timeStamp == 1381419600
2.文字列の書式設定の変更
例 a = “2013-10-10 23:40:00”,=>a = “2013/10/10 23:40:00”
方法:最初配列に変換してから、他のフォーマットに変換
timeArray = time.strptime(a, “%Y-%m-%d %H:%M:%S”)
otherStyleTime = time.strftime(“%Y/%m/%d %H:%M:%S”, timeArray)

3.タイムスタンプは指定された形式の日付に変換:
方法1:
localtime()を使用して時間配列に変換してから、必要なフォーマットを生成

timeStamp = 1381419600
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime(“%Y-%m-%d %H:%M:%S”, timeArray)
otherStyletime == “2013-10-10 23:40:00”

方法2:
import datetime
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime(“%Y-%m-%d %H:%M:%S”)
otherStyletime == “2013-10-10 23:40:00”

4.現在の日付と時刻を取得して指定されたフォーマットに変換
方法1:
import time
now = int(time.time()) -> 現在時刻のタイムスタンプを取得
他の日付形式に変換 例:”%Y-%m-%d %H:%M:%S”
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime(“%Y-%m-%d %H:%M:%S”, timeArray)

方法2:
import datetime
now = datetime.datetime.now() -> 時間配列形式
指定された形式に変換される
otherStyleTime = now.strftime(“%Y-%m-%d %H:%M:%S”)

5.  3日前の時間を取得
import time
import datetime
日付形式の配列を取得
threeDayAgo = (datetime.datetime.now() – datetime.timedelta(days = 3))
タイムスタンプに変換:
timeStamp = int(time.mktime(threeDayAgo.timetuple()))
他の文字列形式に変換:
otherStyleTime = threeDayAgo.strftime(“%Y-%m-%d %H:%M:%S”)
注意:timedelta()のパラメータ:days,hours,seconds,microseconds

6.タイムスタンプを設定して、数日前の時間を計算:
timeStamp = 1381419600
datetimeに変換
import datetime
import time
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
threeDayAgo = dateArray – datetime.timedelta(days = 3)

「Python入門」str()とformat()で文字列を連結するサンプル

str1 = ‘changfa’
str2 = ‘dengbu’

bb = 345
cc = 0.63

サンプル1
str()で数値を文字列型に変換する
cft = str1 + ‘_’ + str(bb) + ‘_’ + str2 + ‘_’ + str(cc)
print(cft)

結果
changfa_345_dengbu_0.63

サンプル2
format()関数でゼロ埋め、数値の書式を変換する
cft = str1 + ‘_’ + format(bb, ’05’) + ‘_’ + str2 + ‘_’ + format(cc, ‘.5f’)
print(cft)
結果
changfa_00345_dengbu_0.63000

サンプル3
cft = ‘{}_{:05}_{}_{:.5f}’.format(str1, bb, str2, cc)
print(cft)
結果
changfa_00345_dengbu_0.63000

「Python」isinstanceのサンプル

サンプル
i = 4
print isinstance(i, int)

結果
True

「python入門」append()で要素を追加するサンプル

pythonコード:
>>> cftlist = [1,2,0,’test’]

>>> cftlist

[1, 2, 0, ‘test’]

>>> cftlist.append(4)

>>> cftlist

[1, 2, 0, ‘test’, 4]

>>> cftlist.append(‘data’)

>>> cftlist

[1, 2, 0, ‘test’, 4, ‘data’]

>>>