【Python3】ファイル処理

file = open("input.txt", encoding="utf-8") #ファイルを開く
s = file.read() #ファイルを読み込む
file.close() #ファイルを閉じる

print(s) #読み込んだ内容を表示する
file = open("output.txt", mode="w", encoding="utf-8") #ファイルを開く
file.write("Hello World") #ファイルに書き込む
file.close() #ファイルを閉じる
file = open("output.txt", mode="w", encoding="utf-8") #ファイルを開く
try: #ファイルを処理する際は例外を考慮し、確実にファイルを閉じる
    file.write("Hello World") #ファイルに書き込む
finally:
    file.close() #ファイルを閉じる
#with を使うと自動で閉じる
with open("output.txt", mode="w", encoding="utf-8") as f:
    f.write("Hello World")
with open("input.txt", encoding="utf-8") as tf:
    for line in tf: #テキストファイルを 1 行ずつ処理する
        print(line)
import json

#辞書型データ
data = {
    "no" : 5,
    "code" : ("jas", 1, 19),
    "scr" : "be quick to listen, slow to speak. slow to anger"
}

#json として出力
filename = "output.json"
with open(filename, "w") as fp:
    json.dump(data, fp)

#json として入力
with open(filename, "r") as fp:
    r = json.load(fp)
    print("no=", r["no"])
    print("code=", r["code"])
    print("scr=", r["scr"])

【Python3】Windows10 に pycrypto をインストール

pip install pycrypto

を行ってみるがエラーになってしまう。 検索してみたらこちらが見つかったが環境が異なるので自分のところで動くようにしてみた。

【参考元】Windows(x64)でPython3.6.0(x64)にPyCryptoを入れるメモ https://qiita.com/walkure/items/09516cb711ff1c886286

自分の環境 ・Windows 10(x64) ・Python 3.6.1(x64) ・Visual Studio 2017 Community

管理者権限で cmd.exe を実行
VsDevCmd.bat
set CL=-FI"%VCINSTALLDIR%Tools\MSVC\14.13.26128\include\stdint.h"
pip install pycrypto

【Python3】モジュール

import random #疑似乱数モジュールを取り込む

r = random.randint(1, 6) #疑似乱数値を取得
print(r)
import random #疑似乱数モジュールを取り込む

random_func = random.randint #疑似乱数取得関数を省略名
r = random_func(1, 6) #関数の呼び出し
print(r)
import datetime #日付モジュールを取り込む

today = datetime.date.today() #今日の日付を取得
print(today)

time = datetime.datetime.now() #今の時刻を取得
time_str = time.strftime("%Y/%m/%d %H:%M:%S") #日付の文字列表記
print(time_str)

【Python3】例外

for s in [ 10, 0, "Hello" ]:
    try: #例外を補足する
        v = 100 / float(s)
        print(v)
    except ValueError as e: #数値でない値の例外を受け取る
        print(e)
    except ZeroDivisionError as e: #0 除算例外を受け取る
        print(e)
    except: #その他の例以外を受け取る
        print("その他のエラー")
    finally: #例外ーの有無にかかわらず最後に実行したい処理
        print("終了")
try:
    raise Exception("Exception") #例外を発生させる
    print("正常")
except:
    print("例外が発生")

【Python3】イテレータ

nums = [1, 2, 3]
i = iter(nums) #イテレーターを取得
next(i) #イテレーターを進める
next(i) #イテレーターを進める
next(i) #イテレーターを進める

i = iter( range(1, 4) ) #range のイテレーターを取得
next(i) #イテレーターを進める
next(i) #イテレーターを進める
next(i) #イテレーターを進める
def get1to3(): #関数を定義
    yield 1;
    yield 2;
    yield 3;

it = get1to3() #イテレータオブジェクトを取得

for i in it: #表示
    print(i)


def getOdd(): #関数を定義
    i = 1
    while i <= 30:
        yield i
        i += 2

it = getOdd() #イテレータオブジェクトを取得

for i in it: #表示
    print(i)

【Python3】無名関数

def function1():
    return "function1"

def function2():
    return "function2"

function = function2 # 関数を変数に代入する(関数オブジェクト)

print( function() ) #関数を呼び出す
function = lambda x : x * 2 #ラムダ

print( function( 3 ) )
i = [1, 3, 5, 7, 9]
func = lambda x : x * 2
o = map(func, i) #リストに対してラムダを実行
print( list( o ) )
i = [1, 2, 3, 11, 12, 13, 21, 22, 23]
o = filter(lambda x : (x % 2) == 0, i) #リストに対しラムダの条件を満たすものを抽出
print( list( o ) )
#リスト
animal_list = [
    ("ライオン", 58),
    ("チーター", 110),
    ("シマウマ", 60),
    ("トナカイ", 80)
]

faster_list = sorted(animal_list, key = lambda ani : ani[1], reverse = True) #指定されたキーの降順にソート

for i in faster_list : print(i)

#辞書型
animal_dict = {
    "ライオン": 58,
    "チーター": 110,
    "シマウマ": 60,
    "トナカイ": 80
}

faster_list = sorted(animal_dict.items(), key = lambda ani : ani[1], reverse = True) #指定されたキーの降順にソート

for name,speed in faster_list : print(name,speed)

【Python3】グローバル変数とローカル変数

variable = 100 #グローバル変数

def Function():
    variable = 200 #ローカル変数

print("variable="+str(variable)) #異なるスコープが
variable = 100

def Function():
    global variable #グローバル宣言 
    variable = 200

Function()
print("variable="+str(variable))