Pythonモジュールdatetime


Pythonモジュール(Module)は、Pythonファイルです.pyの最後に、Pythonオブジェクト定義とPython文が含まれています.モジュールは、Pythonコードセグメントを論理的に組織することができます.関連するコードを1つのモジュールに割り当てると、コードがより使いやすく、分かりやすくなります.モジュールは関数、クラス、変数を定義し、モジュールにも実行可能なコードを含めることができます.
モジュールのインポート
これらの機能が必要な他のファイルで、このモジュールをインポートすると、これらの関数と変数を再利用できます.一般用module_name.fun_name,module_name.var_nameを使用します.このような意味の使い方はモジュールをクラスや名前空間のように見せ、module_nameは名前限定子と理解される.モジュール名はファイル名を削除する.py接尾辞.モジュールをインポートする方法は次のとおりです.
1). import PackageA.SubPackageA.ModuleA#はフルパス名で使用する必要があります
2). from PackageA.SubPackageA import ModuleA#は、パッケージ接頭辞を付けずにモジュール名を直接使用します.
3). from PackageA.SubPackageA.ModuleA import functionA#モジュールの関数または変数を直接インポート
(1)import item.subitem.subsubitem構文を使用する場合、最後のitemより前のitemはパケットでなければならない.最後のitemはモジュールまたはパケットであってもよいが、クラス、関数、変数ではない.
(2)from package import itemを使用する場合、itemはpackageのサブモジュールまたはサブパッケージであってもよいし、パッケージに定義されている他の名前(関数、クラス、変数など)であってもよい.まずitemがパッケージに定義されているかどうかを確認するが、見つからない場合はitemがモジュールであると判断してロードしようとするが、失敗するとImportError異常が投げ出される.
(3)from pacakge import*を使用する場合、パッケージの__init_.pyがインポートされたモジュールのリストとして「_all_」という名前のリスト変数を定義している場合.この文は、パッケージパッケージがインポートされたことを保証し、パッケージに定義されたすべての名前をインポートします.パッケージは、定義されていない場合、すべてのパッケージのサブモジュールをインポートしません.n個のモジュールまたはn個のサブパッケージからなるpythonアプリケーション実行環境を定義する階層化されたファイルディレクトリ構造です.
次にPycharmでディレクトリmodulesを作成し、pythonパッケージmainを作成し、最後にclientを作成します.pyのファイル.パッケージファイルmainを作成すると、ツールは自動的に___を作成します.init__.pyのpythonファイルは、簡単に言えばパッケージがフォルダですが、そのフォルダの下には__が存在する必要があります.init__.pyファイル、このファイルの内容は空にすることができます._int__.pyは、現在のフォルダがパッケージであることを識別します.
__init__.py
if __name__ == '__main__':
   pass
def hello():
   print 'hello,this is a test file'
def name():
   print __name__
def sum(a,b):
   print a+b
def Max(li):
   li.sort()
   print 'Max is %d' %li[-1]
client.py
print '*****import module1[, module2[,... moduleN]*****'
import __init__
__init__.hello()
print '*****from modname import name1[, name2[, ... nameN]]*****'
from __init__ import hello
hello()
print '#####from modname import *#####'
from __init__ import *
name()
sum(1,2)
Max(li=[12,23,32,1,4,6])


*****import module1[, module2[,... moduleN]*****
hello,this is a test file
*****from modname import name1[, name2[, ... nameN]]*****
hello,this is a test file
#####from modname import *#####
__init__
3
Max is 32


モジュールをインポートすると、Python解析器のモジュール位置の検索順序は次のとおりです.
  • 1、現在のディレクトリ
  • 2、現在のディレクトリにない場合、Pythonはshell変数PYTHONPATHの下にある各ディレクトリを検索する.
  • 3、見つからない場合は、Pythonはデフォルトのパスを参照します.UNIXでは、デフォルトのパスは一般的に/usr/local/lib/python/です.

  • モジュール探索経路はsystemモジュールのsysに格納.path変数です.変数には、現在のディレクトリ、PYTHONPATH、およびインストールプロセスによって決定されるデフォルトディレクトリが含まれます.
    importなしで直接使用できる一般的な組み込み関数:
    help(obj) 
    オンラインヘルプ、objはどんなタイプですか
    callable(obj)  
    関数のようにobjを呼び出すことができるかどうかを確認します
    repr(obj) 
    objの表示文字列が得られ、この文字列evalを利用してオブジェクトのコピーを再構築することができる.
    eval_r(str) 
    合法的なpython式を表し、この式を返します.
    dir(obj)     
    objのname spaceで表示されるnameを表示
    hasattr(obj,name) 
    objのname spaceにnameがあるかどうかを確認します
    getattr(obj,name) 
    objのname spaceの1つのnameを得る
    setattr(obj,name,value) 
    objのname
    space
    そのうちの1つのnameはvaleというobjectを指す
    delattr(obj,name) 
    objのname spaceからnameを削除
    vars(obj) 
    objectのname spaceを返します.ディクショナリで表す
    delattr(obj,name) 
    objのname spaceからnameを削除
     globals() 
    グローバルname spaceを返しdictionaryで表す
    type(obj)  
    objのタイプを表示
    isinstance(obj,cls) 
    objがclsのinstanceかどうかを確認します
    issubclass(subcls,supcls) 
    subclsがsupclsのサブクラスかどうかを表示
    ###################################タイプ変換
    chr(i)ASCIIの数値を文字にする
    ord(i)は1文字またはunicode文字をASCII数値にする
    oct(x)整数xを8進数で表す文字列に変える
    hex(x)整数xを16進数で表す文字列にする
    str(obj)objの文字列記述を得る
    list(seq)は1つのsequenceを1つのlistに変換する
    tuple(seq)は1つのsequenceを1つのtupleに変換する
    dict()、dict(list)をdictionaryに変換
    int(x)をintegerに変換
    long(x)をlong intergerに変換
    float(x)を浮動小数点数に変換
    complex(x)を複素数に変換
    max(...) 最大値を求める
    min(...) 最小値を求める
    日時モジュールdatetime
    DatetimeはPythonが日付と時間を処理する標準ライブラリです.
    import datetime
    _now=datetime.datetime.now()
    print _now
    print type(_now)
    from datetime import datetime
    now=datetime.now()
    print now
    print type(now)


    2017-11-09 17:29:04.976000

    2017-11-09 17:29:04.976000


    プログラムからdatetimeがモジュールであることがわかり、datetimeモジュールにはdatetimeクラスも含まれており、from datetime import datetimeでインポートされたのがdatetimeというクラスである.import datetimeのみをインポートする場合は、フルネームdatetimeを参照する必要があります.datetime.datetime.now()は、datetimeのタイプである現在の日付と時刻を返します.
    pythonのtimeにはfloat,struct tuple(time.struct_timeまたはdatetime.datetime),strの3つのフォーマットがあります.
    from datetime import datetime
    import time
    print '#####timestamp #####'
    t1=time.time()
    print t1
    print type(t1)
    print '#####time tuple #####'
    t2=time.localtime()
    print type(t2)
    print '#####string #####'
    t3=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print t3
    print type(t3)


    #####timestamp #####
    1510219689.67

    #####time tuple #####

    #####string #####
    2017-11-09 17:28:09


    一般的なタイプ変換:
    float --> struct tuple:   time.localtime( float )
    struct time tuple --> str: time.strftime(format, struct time tuple)
    str --> struct time tuple: time.strptime(str, format)
    struct time tuple --> float : time.mktime(struct time tuple)
    struct time tuple --> datetime: datetime(*time_tuple[0:6])
    float --> datetime: datetime.datetime.fromtimestamp( float )
    datetime --> struct time tuple: datetime.timetuple()
    from datetime import datetime
    import time
    print '#####float --> struct tuple'
    t0=time.localtime()
    t1=datetime.now().timetuple()
    print t0,type(t0)
    print t1,type(t1)
    print '#####datetime --> str'
    t2=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print t2,type(t2)
    print '#####str --> datetime'
    t3=datetime.now().strptime('2017-11-11','%Y-%m-%d')
    print t3,type(t3)
    print '#####struct time tuple --> float '
    t4=time.mktime(time.localtime())
    print t4,type(t4)
    print '#####struct time tuple --> datetime'
    t5=datetime(2017,11,11)
    print t5,type(t5)
    print '#####float --> datetime'
    t6=datetime.fromtimestamp(time.time())
    print t6,type(t6)
    print '#####datetime --> struct time tuple'
    t7=datetime.timetuple(datetime.now())
    print t7,type(t7)


    #####float --> struct tuple
    time.struct_time(tm_year=2017, tm_mon=11, tm_mday=9, tm_hour=17, tm_min=16, tm_sec=59, tm_wday=3, tm_yday=313, tm_isdst=0)
    time.struct_time(tm_year=2017, tm_mon=11, tm_mday=9, tm_hour=17, tm_min=16, tm_sec=59, tm_wday=3, tm_yday=313, tm_isdst=-1)
    #####datetime --> str
    2017-11-09 17:16:59
    #####str --> datetime
    2017-11-11 00:00:00
    #####struct time tuple --> float
    1510219019.0
    #####struct time tuple --> datetime
    2017-11-11 00:00:00
    #####float --> datetime
    2017-11-09 17:16:59.269000
    #####datetime --> struct time tuple
    time.struct_time(tm_year=2017, tm_mon=11, tm_mday=9, tm_hour=17, tm_min=16, tm_sec=59, tm_wday=3, tm_yday=313, tm_isdst=-1)


    pythonの日付書式設定記号:
    %y 
    2桁の年表示(00-99)
    %Y 
    四桁の年表示(000-9999)
    %m 
    月(01-12)
    %d 
    月内の1日(0-31)
    %H
    24時間制時間数(0-23)
    %I 
    12時間制時間数(01-12)
    %M 
    分(00=59)
    %S 
    秒(00-59)
    %a 
    ローカル簡略化曜日名
    %A 
    ローカルフルタイム曜日名
    %b 
    ローカルで簡略化された月名
    %B 
    ローカルの完全な月名
    %c 
    ローカル対応の日付表示と時刻表示
    %j 
    年内の1日(001-366)
    %p 
    ローカルA.M.またはP.M.の等価子
    %U 
    年間の曜日(00-53)日曜日は曜日の始まりです
    %w 
    曜日(0-6)、日曜日は曜日の始まりです
    %W 
    年間の曜日(00-53)月曜日が週の始まりです
    %x 
    ローカル対応の日付表示
    %X 
    ローカル対応時間表示
    %Z 
    現在のタイムゾーンの名前
    %% 
    %番号自体