day 15-時間とhashとjson


タイムモジュール
  • pythonと時間関連モジュールは2つあります:time、datetime
  • タイムスタンプとは、現在の時間から1970年1月1日0時0分0秒(グリニッジ時間を指す)までの時間差(単位時間秒)の利点を指す:1)文字列保存時間を使用するメモリよりもタイムスタンプ保存時間が少ない;2)タイムスタンプによる暗号化が簡単
  • time()-現在の時刻を取得し、タイムスタンプ
  • を返します.
  • localtime()-現在のローカル時間を取得し、構造体時間localtime(タイムスタンプ)を返します-時間をローカルの構造体時間に変換
  • 構造体時間を文字列時間strftime(時間フォーマット文字列、構造体時間)
    """
    %Y  -   
    %m  -   
    %d  -   
    %H  -   (24   )
    %I  -   (12   )
    %M  -   
    %S  -   
    %a  -    (  )
    %A  -    (  )
    %w  -    (   )
    %b  -    (  )
    %B  -    (  )
    %p  -        (AM/PM)
    """
    
  • に変換
    datetime
    from datetime import time, date, datetime, timedelta
    # time -    
    # date -    
    # datetime -       
    t1 = date.today()
    print(t1, t1.year, t1.month, t1.day)	# 2020-12-26 2020 12 26
    
    t2 = datetime.now()
    print(t2)	# 2020-12-26 17:50:13.300294
    	
    t3 = datetime(2020, 12, 31, 23, 59, 10)
    print(t3)   # 2020-12-31 23:59:10
    
    print(t3 + timedelta(seconds=40))   # 2020-12-31 23:59:50
    print(t3 + timedelta(days=1))   # 2021-01-01 23:59:10
    

    hash要約
    hashlibはpythonが独自にhash暗号化を提供するモジュールです
  • hash暗号化の特徴:
  • 同じデータを同じ暗号化アルゴリズムで得た結果は同じである(暗号化後の結果を暗号文または要約と呼ぶ)
  • 暗号化後の結果不可逆
  • 異なるサイズのデータが同じアルゴリズムによって生成される要約の長さは同じ
  • 適用シーン
  • データ不可逆の暗号化を作成
  • データの整合性の検証と修正の有無
  • 概要の生成方法
  • 暗号化アルゴリズムに基づいてhashオブジェクト
    hash = hashlib.md5()  #   hash  : md5、sha  
    
  • を作成
  • 暗号化オブジェクトhashオブジェクトを決定する.update(データ)データ-bytesオブジェクト
    hash.update(bytes('123456', encoding='utf-8'))
    
  • でなければならない
  • 生成要約(暗号文生成)hashオブジェクト.hexdigest()
    result = hash.hexdigest()
    print(result)   # e10adc3949ba59abbe56e057f20f883e
    
  • 生成ピクチャサマリ
    hash = hashlib.md5()
    with open('    ', 'rb') as f:
        hash.update(f.read())
        print(hash.hexdigest())
    
  • テキストファイルの概要を生成
    hash = hashlib.md5()
    with open('01-  .py', 'rb') as f:
        hash.update(f.read())
        print(hash.hexdigest()) # 584e96244fb3de4e51233ee5306f37d0
    
  • (補足)文字列とバイナリ間の相互変換
  • 文字列変換バイナリ符号化a.bytes(文字列、encoding=‘utf-8’)
    str1 = 'hello world!'
    b1 = bytes(str1, encoding='utf-8')
    print(type(b1))     # 
    
    b.文字列.encode()
    b2 = str1.encode()
    print(type(b2))     # 
    
  • バイナリ変換文字列-復号a.str(バイナリ、encoding=‘utf-8’)b.バイナリ.decode()
    s1 = str(b1, encoding='utf-8')
    print(s1, type(s1))     # hello world! 
    
    s2 = b1.decode()
    print(s2, type(s2))     # hello world! 
    

  • その他のモジュール
    cmathは複素数に数学的機能を提供するモジュールである.
    import math, cmath, os
    
    print(math.ceil(1.2))   # 2 -     
    print(math.floor(1.2))  # 1 -     
    

    jsonデータ
  • json jsonとはデータフォーマットです.1つのjsonには1つのデータしかありません.この唯一のデータはjsonがサポートするデータ型のデータ
  • でなければならない.
  • jsonがサポートするデータ型
  • 数字のタイプ:すべての数字を含んで、整数、浮動小数点数、正数、負数を含んで...表す時直接書いて、科学の計数法
  • を支持します
  • 文字列:二重引用符で囲まれたテキストデータ(二重引用符のみ)は、エスケープ文字をサポートします.-“abc”, ‘abc123’, “\u4e00abc”
  • ブール:tureとfalseの2つの値しかなく、表示するときは直接
  • と書きます.
  • 配列:リストに相当し、[要素1,要素2,要素3,...]
  • 辞書:pythonに相当する辞書,{キー1:値1,キー2:値2,キー3:値3,...}キーは文字列
  • Null
  • jsonデータ転送python数字–整数、浮動小数点文字列–文字列ブール–ブール:true->True;false->False配列-リスト辞書-辞書null-None
  • json.loads(jsonデータ)-jsonデータとはjison形式の文字列を指す(文字列が引用符を引いた後、それ自体が合法的なjsonデータである)
    「abc」-json形式の文字列ではありません
    '「abc」-json形式文字列
    「123」–json形式の文字列です
    result = json.loads('"abc"')
    print(result, type(result))  # 'abc' 
    
    result = json.loads('123')
    print(result, type(result))  # 123 
    
    result = json.loads('true')
    print(result, type(result))  # True 
    
    result = json.loads('["hello", 123, null, false]')
    print(result, type(result))  # ['hello', 123, None, False] 
    
    result = json.loads('{"name":"  ", "age":18}')
    print(result, type(result))  # {'name': '  ', 'age': 18} 
    
  • pythonデータはjsonint、float->ディジタルブール->True:True->true、False->false文字列->文字列に回転し、引用符は二重引用符リスト、メタグループ->配列辞書->辞書None->null json.dumps(pythonデータ)-pythonデータをjson形式の文字列120->120'‘abc’->abc'[abc',120,True]に変換する -> ‘[“abc”, 120, true]’
    result = json.dumps(120)
    print(result, type(result))  # '120' 
    
    result = json.dumps('abc')
    print(result, type(result))  # '"abc"' 
    
    result = json.dumps([120, False, None, 'hello'])
    print(result, type(result))  # '[120, false, null, "hello"]' 
    
    result = json.dumps({
           'name':'  ', 10:100})
    print(result)  # '{"name": "\u5f20\u4e09", "10": 100}'