Programming
Contents
はじめに
ここは学習用および実験的プログラミングネタ置き場です。
サンプルコードはご自由にお使いください。
Python学習編
使用方法
各コードをファイルに名前をつけて保存し、
chmod +x ファイル名.pyで実行権限を付与。
ターミナルで./ファイル名.pyで実行します。
Hello,World
シンプルなプリント文
#!/usr/bin/python3
print("Hello,World!!\n")
変数を代入するプリント文
#!/usr/bin/python3
hello="Hello,World"
print(hello)
文字列を制御
特定文字列のフィルタリング
#!/usr/bin/python3
#
a = "SRC=192.168.x.x"
print (a.strip("SRC="))
192.168.x.x
0埋め
#!/usr/bin/python3
#
a="1"
print(a.zfill(3))
001
Main関数を使う
#!/usr/bin/python3
#
def Hello(str):
print(str)
#
if __name__ == '__main__':
Hello("Hello,Python!!\n")
独自関数
#!/usr/bin/python3
number1 = 12
number2 = 34
def add(num1,num2):
num=num1+num2
return(num)
def output(num):
print(num)
total = add(number1,number2)
output(total)
ファイル入出力
読み込み
ファイルを読み込んで内容を表示する。
#!/usr/bin/python3
file = open("Hello.txt",r)
print(file.read())
file.close()
CSV読み込み
#!/usr/bin/python3
import csv
filename='test.csv'
with open(filename) as f:
reader = csv.reader(f)
for row in reader:
print(row)
書き込み
ファイルをに書き込む。
#!/usr/bin/python3
file = open("Hello.txt",w)
file.write("hello, ")
file.write("World")
file.write("\n")
file.close()
withを使う
with open("sample.txt", mode="a") as f:
f.write("sample01\n")
f.write("sample02\n")
withを使う※例外処理
file = open("sample.txt", mode="a")
try:
file.write("sample01\n")
file.write("sample02\n")
finally:
file.close()
ファイルの存在チェック
#!/usr/bin/python3
#
import os
#
filename='Hello.txt'
if(os.path.exists(filename)):
fileobj = open(filename)
data = fileobj.read()
fileobj.close()
print(data)
else:
print filename + " is not found\n"
繰り返し文
#!/usr/bin/python3
i = 0
while i < 10:
print("Hello,World!!")
i += 1
条件分岐(if)
if row[0]=='Dec':
if (len(row))>19:
ip_dport.append(row[19].strip("DPT="))
ip_list = ("2021"+"-"+trans_word(row[0])+"-"+row[1].zfill(2),row[2].zfill(2),row[10].strip("SRC="))
if row[0]!='Dec':
if (len(row))>17:
ip_dport.append(row[17].strip("DPT="))
ip_list = ((row[0][0:10]),row[8].strip("SRC="))
現在時刻表示
#!/usr/bin/python3
import datetime
dt_now = datetime.datetime.now()
print(dt_now)
MySQL/mariaDB接続
$ pip install PyMySQL
###----- 接続情報(共通)
import pymysql.cursors
conn = pymysql.connect(user = 'username',
password = 'pass',
host = 'localhost',
db = 'dbname',
charset='utf8mb4')
###----- insert 文
con = conn.cursor()
sql = "insert into `table_name` (`col1`,`col2`,`col3`,`col4`,`col5`) values(%s,%s,%s,%s,%s)"
con.execute(sql,(col1,col2,col3,col4,col5))
conn.commit()
con.close()
###----- select文
con = conn.cursor()
sql = "select col1, col2 FROM table_name WHERE col1 = %s"
con.execute(sql, ('row',))
result = con.fetchall()
print(result)
con.close()
【サンプル】
IPアドレスから国、都市名検索(GeoIP2)
#!/usr/bin/python3
import os
import ipaddress
import geoip2.database
from itertools import groupby
from operator import itemgetter
#
gipcountry = geoip2.database.Reader("/home/share3/GeoIP2/GeoLite2-Country.mmdb")
gipcity = geoip2.database.Reader("/home/share3/GeoIP2/GeoLite2-City.mmdb")
#-----------------------------------------------------------------------
def trans_geoip(ip_addr):
if '192.168.1.' in ip_addr:
return ('Private')
try:
response = gipcountry.country(ip_addr)
return (response.country.names['ja'])
except:
pass
#-----------------------------------------------------------------------
def trans_geoipcity(ip_addr):
if '192.168.1.' in ip_addr:
return ('Private')
try:
response = gipcity.city(ip_addr)
return (response.city.names['ja'])
except:
pass
#-----------------------------------------------------------------------
ip_addr="xxx.xxx.xxx.xxx"
ip_country=(trans_geoip(ip_addr))
ip_city=(trans_geoipcity(ip_addr))
ip_list=[ip_country,ip_city,ip_addr]
print(ip_list)
IPアドレスから緯度経度抽出してMAP生成(GeoIP2)
#!/usr/bin/python3
import cgitb
cgitb.enable()
import sys
import os
import folium
import geoip2.database
#
gipcity = geoip2.database.Reader("/usr/share/GeoIP/GeoLite2-City.mmdb")
mappath='/var/www/vhost/osmaniax.1banzaka.com/pythonlabo/'
#
print("Content-Type:text/html;charset=utf-8\n")
print("<Head>")
print('<meta http-equiv="refresh" content="1;URL=map.html">')
print("<title>Hello,Python World</title>")
print("</Head>")
print("<H1>Hello,Python World</H1>")
#
for param in os.environ.keys():
env = (param, os.environ[param])
REMOTE_ADDR = (param, os.environ['REMOTE_ADDR'])
GEO_LATITUDE = (param, os.environ['HTTP_GEOIP_LATITUDE'])
GEO_LONGITUDE = (param, os.environ['HTTP_GEOIP_LONGITUDE'])
ip_addr = REMOTE_ADDR[1]
folium_map= folium.Map(location=[GEO_LATITUDE[1],GEO_LONGITUDE[1]],zoom_start=15)
folium.Marker(location=[GEO_LATITUDE[1],GEO_LONGITUDE[1]]).add_to(folium_map)
folium_map.save('map.html')
print("<hr>")
if '192.168.1.' in ip_addr:
print("Local-IP")
print('<a href="map.html">map link</a>')