[ TOC]
(1) 組み込みモジュールのリスト
説明:モジュールは、定義したすべての関数と変数を含むファイルです。その接尾辞は.pyです。モジュールをインポートして、モジュール内の関数やその他の関数を使用できない場合があります。
#>>> dir(random) #モジュール内の関数を表示および使用する,前提条件はモジュールを導入する必要があります,高レベルの使用法のインポートでは、モジュールがモジュールエイリアスとして導入されます;
#>>> help(random) #モジュールヘルプ
import os #オペレーティングシステムモジュール
import sys #システムモジュール
import math #数学計算モジュール
import random #ランダム番号生成モジュール
import pickle #データシーケンスおよび逆シリアル化モジュール
import time #時間分析モジュールは、さまざまな時間関連機能を提供します(時間、日時、カレンダー)import dlifflib #ファイル比較モジュール(Python自動運用保守室の詳細説明)import filecmp #ファイルディレクトリの違いの比較方法(同時に)import pprint #美しい出力をフォーマットする
import requests #リクエストネットワークリクエストの送信は非常に簡単です
import smtplib #メール送信モジュール
import email #メールテンプレートパッケージ
import uuid #UUIDモジュール
説明:ファイル/ディレクトリに関するosモジュールの一般的な機能の使用方法:
getcwd()は、現在の作業ディレクトリを返します
chdir(path)作業ディレクトリの変更
listdir(path = '。')指定されたディレクトリ内のファイル名を一覧表示します( '。'は現在のディレクトリを意味し、 '..'は上位ディレクトリを意味します)
mkdir(path)は単一レベルのディレクトリを作成し、ディレクトリがすでに存在する場合は例外をスローします
makedirs(path)マルチレイヤーディレクトリを再帰的に作成します。ディレクトリがすでに存在する場合、例外がスローされます。注:「E:\ a \ b」と「E:\ a \ c」は競合しません。
remove(path)ファイルの削除
rmdir(path)は、単一レベルのディレクトリを削除します。ディレクトリが空でない場合、例外がスローされます
removeirs(path)ディレクトリを再帰的に削除し、サブディレクトリから親ディレクトリにレイヤーごとに削除を試み、ディレクトリが空でない場合は例外をスローします
rename(old、new)ファイルの名前をoldからnewに変更します
system(command)システムのシェルコマンドを実行し、コマンド実行後のリターンを表示し、リターンが成功したかどうかを表示します0/1
walk(top)は、トップパスの下にあるすべてのサブディレクトリをトラバースし、トリプルを返します:(path、[include directory]、[include file])
以下は、パス操作のサポートで一般的に使用され、すべてのプラットフォーム(定数と同等)をサポートするいくつかの定義です。
os.curdirは現在のディレクトリを参照します('.')
os.pardirは、上位レベルのディレクトリを参照します('..')
os.9月の出力オペレーティングシステム固有のパスセパレータ(Winの下)'\\'、Linuxの場合'/')
os.linesep現在のプラットフォームで使用されているラインターミネータ(Winの下)'\r\n'、Linuxの場合'\n')
os.名前は、現在使用されているオペレーティングシステムを指します(以下を含む)。'posix','nt','mac','os2','ce','java')
os.popen(コマンド) 执行指定的系统可执行脚本的コマンド
osモジュールケース1:
#! /usr/bin/python3
# 機能:OSモジュールの使用
import os
print("現在のパス:",os.getcwd())
os.chdir('C:\\Users\\Administrator\\Desktop\\Python') #パスを変更する
print("変更されたパス:",os.getcwd())
os.mkdir('.\\test') #ディレクトリを作成する
os.makedirs('.\\web\\a\\b') #ディレクトリがすでに存在する場合、ディレクトリおよびマルチレベルディレクトリは作成できません
# os.remove('.\\demo2-10.txt') #ファイルの削除
os.rmdir('.\\test') #単一のディレクトリを削除します
os.removedirs('.\\web\\a\\b') #複数のディレクトリを削除する
print(os.system('DATE /T')) #正常に実行すると0が返され、それ以外の場合は1printが返されます。(list(os.walk(os.curdir))) #現在のディレクトリosをトラバースします.pardir()print('区切り文字を指定します。',os.sep)print('現在のプラットフォームのシンボルを中止: %s'%os.linesep) #\r\n
print('現在使用されている操作は:',os.name)
OSモジュール
osモジュールケース2:
説明:os.popenを使用してos.systemを置き換え、システムコマンドを実行します。
#! /usr/bin/env python
# - *- coding:utf-8-*-
# ネイティブのオープンポートLinuxを入手する/Windwos
command ="netstat -an|findstr TCP"
command ="netstat -tnlp|egrep -i tcp|awk {'print $4'}|awk -F':' '{print $NF}'|sort"
lines = os.popen(command).readlines() #キーポイント
for line in lines:
port = line.split()
port_list.append(port[0])
command ="netstat -an|findstr TCP"
lines = os.popen(command).readlines() #キーポイント
for line in lines:
port=line.split()
port=port[1].split(':')print(port[1])
# runfile('E:/githubProject/Study-Promgram/Python3/Day9/os.popen.py', wdir='E:/githubProject/Study-Promgram/Python3/Day9')
# 135
# 443
# 445
# 902
# 例2.マシンのIPアドレス情報を取得します
for k in os.popen("ip addr").readlines():print(k)
# 15: eth0:<BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
# link/ether 98:90:96:e1:91:d6
# inet 192.168.1.88/24 brd 10.20.172.255 scope global dynamic
# valid_lft 691196sec preferred_lft 691196sec
# inet6 fe80::d97d:fe6c:10bf:4244/64 scope link dynamic
# valid_lft forever preferred_lft forever
説明:os.pathモジュールパスの一般的な機能の使用方法
basename(path)ディレクトリパスを削除し、ファイル名を個別に返します
dirname(path)はファイル名を削除し、ディレクトリパスを個別に返します
join(path1 [、path2 [、…]])path1、path2の各部分をパス名に結合します
split(path)
ファイル名とパスを分割し、(f_path、f_name)タプルを返します。ディレクトリが完全に使用されている場合は、最後のディレクトリもファイル名として分離され、ファイルまたはディレクトリが存在するかどうかは判別されません。
splitext(path)はファイル名と拡張子を分離し、(f_name、f_extension)タプルを返します
getsize(file)は、指定されたファイルのサイズをバイト単位で返します
getatime(file)
指定されたファイルの最新のアクセス時刻を返します(浮動小数点秒、タイムモジュールのgmtime()またはlocaltime()関数によって変換されます)
getctime(file)は、指定されたファイルの作成時刻を返します(浮動小数点秒、上記と同じ)
getmtime(file)は、指定されたファイルの最新の変更時刻を返します(浮動小数点秒、上記と同じ)
次の関数はTrueまたはFalseを返します
exists(path)指定されたパス(ディレクトリまたはファイル)が存在するかどうかを判別します
isabs(path)指定されたパスが絶対パスであるかどうかを判別します
isdir(path)指定されたパスが存在し、ディレクトリであるかどうかを判別します
isfile(path)指定されたパスが存在し、ファイルであるかどうかを判別します
islink(path)指定されたパスが存在し、シンボリックリンクであるかどうかを判別します
ismount(path)指定されたパスが存在し、マウントポイントであるかどうかを判別します
samefile(path1、paht2)path1とpath2が同じファイルを指しているかどうかを判別します
場合:
#! /usr/bin/python3
# 機能:OSモジュール使用
import os
print(os.path.basename('E:\\web\\conf\\test.php'))print(os.path.dirname('E:\\web\\conf\\test.php'))print(os.path.join('E:\\','test\\demo.php')) #path1は絶対パスにエスケープシンボルを追加する必要があることに注意してください
print(os.path.split('E:\\web\\conf\\test.php'))print(os.path.splitext('E:\\web\\conf\\test.php'))print(os.path.getsize(os.curdir +'\\python.txt'),'Bytes')print("設立時間:",os.path.getctime(os.curdir +'\\python.txt'),'ms')print("時間を変更します。",os.path.getmtime(os.curdir +'\\python.txt'),'ms')print("面接時間:",os.path.getatime(os.curdir +'\\python.txt'),'ms')if os.path.exists('.\\python.txt'):print("ディレクトリまたはファイルが存在します")else:print('ディレクトリまたはファイルが存在しません')print("それが絶対パスであるかどうか:",os.path.isabs('.\\python.txt'))print("ファイルですか:",os.path.isfile('.\\python.txt'),"それはディレクトリですか:",os.path.isdir(os.pardir+'\\python'))print("それがマウントポイントであるかどうかを確認します。",os.path.ismount('D:\\'))
os.pathモジュール
説明:属性とパラメーターのリスト
(1) sys.argvCMDリストパラメータの取得
import sys #システムモジュール
sys.setdefaultenconding('utf-8|gb2312') #システムのデフォルトのエンコード形式を設定します
sys.version_info #現在のPythonバージョン情報
# sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)
数学をインポートするPython数学関数
数学的定数
pi数学定数pi(pi、一般にπで表される)
e数学定数e、eは自然定数(自然定数)
(1) abs(x)は数値の絶対値を返します。たとえば、abs(-10)は10を返します。
(2) ceil(x)は、math.ceil(4.1)が5を返すように、数値の上向きの整数を返します。
(3) exp(x)はeをx(ex)の累乗で返します。たとえば、math.exp(1)は2.718281828459045を返します。
(4) fabs(x)は数値の絶対値を返します。たとえば、math.fabs(-10)は10.0を返します。
(5) floor(x)は、math.floor(4.9)が4を返すように、数値の丸められた整数を返します。
(6) math.log(math.e)などのlog(x)は1.0を返し、math.log(100,10)は2.0を返します。
(6) log10(x)は、10に基づくxの対数を返します。たとえば、math.log10(100)は2.0を返します。
(7) max(x1、x2、...)は、指定されたパラメーターの最大値を返します。これはシーケンスにすることができます。
(8) min(x1、x2、...)は、指定されたパラメーターの最小値を返します。これはシーケンスにすることができます。
(9) modf(x)は、xの整数部分と分数部分を返します。2つの部分の数値記号はxと同じであり、整数部分は浮動小数点型(タプルとして格納)で表されます。
(10) pow(x、y)操作(つまり指数)後のx ** yの値。
(11) round(x [、n])は、浮動小数点数xの丸められた値を返します。nが指定されている場合、それは小数点に丸められた桁数を表します。
(12) sqrt(x)は、数値xの平方根を返します。
(13) sum(iterable [、start-0])は、iterableシーケンスとオプションのパラメーターstart(一貫したデータタイプが必要)の合計を返します。
数学の三角関数:
(13) acos(x)は、xのアークコサインをラジアンで返します。
(14) asin(x)は、xのアークサインをラジアンで返します。
(15) atan(x)は、xの円弧接線をラジアンで返します。
(16) atan2(y、x)は、指定されたX座標とY座標のアークタンジェントを返します。
(17) cos(x)は、xの余弦をラジアンで返します。
(18) hypot(x、y)は、ユークリッドノルムsqrt(x * x + y * y)を返します。
(19) sin(x)は、xラジアンの正弦を返します。
(20) tan(x)は、xラジアンの接線を返します。
(21) degrees(x)は、ラジアンをdegrees(math.pi / 2)などの角度に変換し、90.0を返します。
(22) radians(x)は角度をラジアンに変換します
Python数学汎用モジュールの場合:
#! /usr/bin/python3
# coding:utf-8
# 機能:数学的機能検証
import math #数学パッケージをインポートする必要があります
# 絶え間ない
print(math.pi,math.e) #3.1415926535897932.718281828459045
# max /最大値を決定するための最小値/最小
print(max(1,2)) #2print(min([1,2,3],[2,3,4])) #[1,2,3]print(math.ceil(1.2)) #2print(math.floor(1.2)) #1
tup = math.modf(1.8)print("math.modf(1.8)",tup[1],tup[0]) #1.00.8print(pow(5,2)) # 25print(round(8.5)) #丸め(小数部分が5しかない場合でも破棄され、整数部分は丸められないことに注意してください)8print(round(8.51)) #9print(math.sqrt(10)) #3.1622776601683795
# タプルまたはシーケンス(リスト)カートン
tuple1 =(1.1,2.2,3.3)print(sum(tuple1)) # 6.6print(sum(tuple1,4.4)) #6.6+4.4=11.0
ランダム番号は、数学、ゲーム、セキュリティ、およびその他の分野で使用でき、アルゴリズムの効率を向上させ、プログラムのセキュリティを向上させるために、アルゴリズムに組み込まれることがよくあります。
import random
(1) choice(seq)は、random.choice(range(10))などのシーケンスの要素から要素をランダムに選択し、0から9までの整数をランダムに選択します。
(2) randrange([start、] stop [、step])指定された範囲内で指定されたベースだけ増加するセットからランダムな数値を取得します。ベースのデフォルトは1です。
(3) random()は、[0,1)の範囲にある次の実数をランダムに生成します。
(4) seed([x])乱数ジェネレーターのシードを変更します。原理がわからない場合は、(5)シードを特別に設定する必要はありません。Pythonがシードの選択に役立ちます。
(6) shuffle(lst)は、シーケンスのすべての要素をランダムに並べ替えます
(7) Uniform(x、y)は、[x、y]の範囲内にある次の実数をランダムに生成します。
場合:
#! /usr/bin/python3
# coding:utf-8
# 機能:ランダムナンバー機能
import random #モジュールをロードします
print(random.choice(range(0,10))) #0~10ランダムint
print(random.randrange(0,100)) #0~100ランダム数int
print(random.random()) #0~1ランダムに生成された0.47044481738738064 float
print(random.uniform(0,10)) #0~1ランダムに生成された13.47044481738738064 float
random.seed() #ランダムナンバーシード
list =[1,2,3,4,5,6]print(list) #[1,2,3,4,5,6]
random.shuffle(list) #シーケンスのすべての要素をランダムに並べ替えます
print(list) #[2,4,5,1,3,6]
いくつかのアルゴリズムを使用して、データオブジェクトをバイナリファイルに「選択」します。最初にファイルを開くには、「wb」モードを使用する必要があることに注意してください。
(1) pickle.dump(data、file)#最初のパラメーターは保存されるデータオブジェクトであり、2番目のパラメーターは保存されるファイルオブジェクトです
(2) pickle.load(file)#パラメータはターゲットによって保存されたファイルオブジェクトです
Pythonでの時間処理に関連するモジュールには、時間、日時、カレンダーが含まれます。
メソッドのリスト:
gmtime()グリニッジ時間を表示するように変換
localtime()表示現地時間を変換します
strptime()#時間の祖先(struct_time)の形式で戻ります。
# インデックス属性値(値)
0 tm_年(例:2015)
1 tm_月(月)1~122 tm_mday(日)1~313 tm_時間(時間)0~234 tm_分(分)0~595 tm_秒(秒)0~61 #(下記の注1を参照)
6 tm_wday(曜日)0~6(0は月曜日を意味します)
7 tm_yday(年の日)1~3668 tm_isdst(昼光節約時間かどうか)0、1、-1(-1は日光節約時間を表します)
# 注1:範囲は実際には0です~61(あなたはそれを正しく読んだ^_^); 60は飛躍秒を表し、61は歴史的な理由で予約されています
time.altzoneは、グリニッジの西にある昼光節約タイムゾーンのオフセット秒を返します。ゾーンがグリニッジの東にある場合は、負の値を返します(英国を含む西ヨーロッパなど)。昼光節約時間が有効になっているエリアでのみ使用できます。
time.asctime([t])は、タイムタプルを受け入れ、「Tue Dec 11 18:07:14 2015」(2015年12月11日火曜日、18:07:14)の形式で24文字の読み取り可能な形式を返します。ストリング。
time.clock()は、浮動小数点数で計算された現在のCPU時間を秒単位で返します。さまざまなプログラムの消費時間を測定するために使用され、time.time()よりも便利です。
Python 3.3以降はお勧めしません。この方法はオペレーティングシステムによって異なるため、代わりにperf_counter()またはprocess_time()を使用することをお勧めします(一方はシステムの実行時間を返し、もう一方はプロセスの実行時間を返します。実際のニーズに応じて選択してください)
time.ctime([secs])はasctime(localtime(secs))と同等であり、asctime()と同等のパラメーターはありません。
time.gmtime([secs])は、タイムストップ(1970エポックから経過した浮動小数点秒数)を受け取り、グリニッジ天文時間で時間タプルtを返します(注:t.tm_isdstは常に0です)
time.daylight昼光節約時間が定義されている場合、値はゼロ以外です。
time.localtime([secs])は、タイムストップ(1970エポックから経過した浮動小数点秒数)を受け取り、ローカル時間のタイムタプルtを返します(t.tm_isdstは、ローカルの昼光節約時間が0または1のどちらであるかによって異なります)。 )
time.mktime(t)は、タイムタプルを受け入れ、タイムストップ(1970エポックから経過したフローティングポイントの秒数)を返します。
time.perf_counter()は、システム全体のスリープ時間を含む、タイマーの正確な時間(システムの実行時間)を返します。戻り値の基準点は未定義であるため、連続した呼び出しの結果の差のみが有効です。
time.process_time()は、スリープ時間を除いた現在のプロセスのCPU実行時間の合計を返します。戻り値の基準点は未定義であるため、連続した呼び出しの結果の差のみが有効です。
time.sleep(secs)呼び出し元のスレッドの実行を遅らせます。秒の単位は秒です。
time.strftime(format [、t])は、timeまたはstruct_time(time.localtime()およびtime.gmtime()によって返されるものなど)を表すタプルをフォーマットされた時間文字列に変換します。
tが指定されていない場合、time.localtime()が渡されます。タプル内のいずれかの要素が範囲外の場合、ValueErrorがスローされます。
# date, datetime,そして時間オブジェクトはstrftimeをサポートします(format)指定した日付または時刻をカスタム形式の文字列に変換する方法
>>> from datetime import datetime
>>> dt = datetime.now()>>>print('(%Y-%m-%d %H:%M:%S %f): ', dt.strftime('%Y-%m-%d %H:%M:%S %f'))(%Y-%m-%d %H:%M:%S %f):2014-08-3123:54:58379804>>>print('(%Y-%m-%d %H:%M:%S %p): ', dt.strftime('%y-%m-%d %I:%M:%S %p'))(%Y-%m-%d %H:%M:%S %p):14-08-3111:54:58 PM
>>> print('%%a: %s '% dt.strftime('%a'))%a: Sun
>>> print('%%A: %s '% dt.strftime('%A'))%A: Sunday
>>> print('%%b: %s '% dt.strftime('%b'))%b: Aug
>>> print('%%B: %s '% dt.strftime('%B'))%B: August
>>> print('日付時刻%%c: %s '% dt.strftime('%c'))
日付時刻%c:08/31/1423:54:58>>>print('日付%%x:%s '% dt.strftime('%x'))
日付%x:08/31/14>>>print('時間%%X:%s '% dt.strftime('%X'))
時間%X:23:54:58>>>print('今日は今週の最初です%s日'% dt.strftime('%w'))
今日は週の0日です
>>> print('今日は今年の最初です%s日'% dt.strftime('%j'))
今日は今年の243日目です
>>> print('今週は今年の最初です%s週'% dt.strftime('%U'))
今週は今年の35週目です
WeiyiGeek.formatフォーマットパラメータテーブル
時間モジュールの場合:
# タイムゾーンの違い
print("緑:",time.gmtime(os.path.getctime(os.curdir +'\\python.txt')))print("地元:",time.localtime(os.path.getctime(os.curdir +'\\python.txt')))>>> time.localtime()
# 現地時間.struct_time(tm_year=2019, tm_mon=4, tm_mday=7, tm_hour=17, tm_min=26, tm_sec=46, tm_wday=6, tm_yday=97, tm_isdst=0)
# 緑:時間.struct_time(tm_year=2019, tm_mon=3, tm_mday=2, tm_hour=6, tm_min=45, tm_sec=39, tm_wday=5, tm_yday=61, tm_isdst=0)
#! /usr/bin/python
# - *- coding:UTF-8-*-
# 機能:タイムモジュールの使用
import time as t
print("####sleep -3秒の実行を遅らせます!###")
# t.sleep(3)
# フォーマットされた時間文字列をstructに変換します_time
print(t.strftime("%a %b %Y %H:%M:%S +0000", t.localtime()))print(t.strftime("%A %B %Y %H:%M:%S +0000", t.gmtime()))
# タイムタプルを受け入れ、読み取り可能なフォームを返します
print("asctime() ",t.asctime(t.localtime()))
# asctimeと同等の機能(localtime(secs))、asctimeに相当するパラメータはありません()print("ctime() ",t.ctime())
# タイムタプルを受け入れ、タイムストップを返します
print("mktime()指定された時間のタイムスタンプ",t.mktime(t.localtime()))
# 現在の時刻のタイムスタンプ(1970エポックから経過した浮動小数点秒数)を返します。
print("time()現在のタイムスタンプ:",t.time())
# ローカルタイムゾーンでグリニッジからオフセットされた秒数(昼光節約時間はアクティブ化されていません)>0;ヨーロッパ、アジア、アフリカのほとんど<=0)
print("グリニッジからの秒単位のタイムゾーンオフセット:",t.timezone)
# グリニッジの西にある日光節約タイムゾーンのオフセット秒を返します
print("altzoneは、グリニッジの西にある夏のタイムゾーンのオフセットを秒単位で返します:",t.altzone)
# タイマーの正確な時刻(システムの実行時間)を返します
print("perf_counter()タイマーの正確な時間",t.perf_counter())
# スリープ時間を除いた、現在のプロセスのCPU実行時間の合計を返します
print("process_time()現在のプロセスのCPU時間の合計",t.process_time())
# 2つの文字列を含むタプル。1つ目はローカルの非昼光節約タイムゾーンの名前で、2つ目はローカルのDSTタイムゾーンの名前です。
print(t.tzname) #文字化け
####### sleep -3秒の実行を遅らせます!######
# > python demo3.14.py
# Sun Apr 201917:04:21+0000
# Sunday April 201909:04:21+0000
# asctime() Sun Apr 717:04:212019
# ctime() Sun Apr 717:04:212019
# mktime()指定された時間のタイムスタンプ1554627861.0
# time()現在のタイムスタンプ:1554627861.0564845
# グリニッジからの秒単位のタイムゾーンオフセット:-28800
# altzoneは、グリニッジの西にある夏のタイムゾーンのオフセットを秒単位で返します:-32400
# perf_counter()タイマー0の正確な時刻.612054762
# process_time()現在のプロセスがCPU0を実行する時間の合計.59375
説明:datetimeモジュールは、日付と時刻を操作するためのさまざまなクラスを提供します。モジュールは、効率的なフォーマットされた出力に焦点を当てています。
datetimeモジュールは2つの定数を定義します:
datetimeモジュールで定義されているクラス(最初の4つについては以下で詳しく説明します):
# 上記のこれらのクラスの所属:
object
timedelta
tzinfo
timezone
time
date
datetime
(1) timedeltaオブジェクト
timedeltaオブジェクトは、2つの日付または時刻の間の間隔を表します
範囲:
## すべてのパラメーターはオプションです(デフォルトは0です)-内部には属性があります)、パラメーターは整数または浮動小数点数、正または負の数にすることができます。
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)1 millisecond ->1000 microseconds
1 minutes ->60 seconds
1 hours ->3600 seconds
1 weeks ->7 days
0<= microseconds <10000000<= seconds <3600*24(1時間で秒*24時間)
- 999999999<= days <=999999999
タイムデルタの場合:
>>> from datetime import timedelta
>>> year =timedelta(days=365)>>> another_year =timedelta(weeks=40, days=84, hours=23, minutes=50, seconds=600) # adds up to 365 days
>>> year.total_seconds()31536000.0>>> year == another_year
True
>>> ten_years =10* year
>>> ten_years, ten_years.days // 365(datetime.timedelta(3650),10)>>> nine_years = ten_years - year
>>> nine_years, nine_years.days // 365(datetime.timedelta(3285),9)>>> three_years = nine_years // 3;>>> three_years, three_years.days // 365(datetime.timedelta(1095),3)>>>abs(three_years - ten_years)==2* three_years + year
True
(2) 日付オブジェクト
オブジェクトは日付を表します。理想的なカレンダーでは、日付は年(年)、月(月)、日(日)で構成されます。
範囲:
datetime.date(year, month, day)
MINYEAR <= year <=MAXYEAR(つまり、1~9999)
1<= month <=121<= day <=年と月に基づいて決定します(たとえば、2015年2月は28日しかありません)
クラスメソッド(classmethod):*
today(),fromtimestamp(timestamp),fromordinal(ordinal) 】
日付クラス属性:* datedeltaクラス属性と一致
日付インスタンスメソッド:*
date.replace(year、month、day)-新しい日付オブジェクトを生成し、元のオブジェクトの属性をパラメーターで指定された年、月、日で置き換えます
date.timetuple()-日付に対応するtime.struct_timeオブジェクトを返します(timeモジュールのtime.localtime()と同様)
date.toordinal()-日付に対応するグレゴリアンカレンダーの日付を返します
date.weekday()-曜日に0〜6を返します(月曜日は0など)
date.isoweekday()-曜日に1〜7を返します(月曜日は1など)
date.isocalendar()-トリプル形式(年、月、日)を返します
date.isoformat()-「YYYY-MM-DD」などのISO8601形式の日付文字列を返します
date。** str **()-日付オブジェクトdの場合、str(d)はd.isoformat()と同等です。
date.ctime()-日付を表す文字列を返します。これは、時間モジュールのtime.ctime(time.mktime(d.timetuple()))に相当します。
date.strftime(format)-以下に詳述するように、日付を表すカスタムフォーマットの文字列を返します
date。** format **(format)-date.strftime(format)と同じです。これにより、str.format()を呼び出すときにデータオブジェクトの文字列を指定できます。
# 以下は、日数の計算例です。
>>> import time
>>> from datetime import date
>>> today = date.today()>>> today
datetime.date(2014,8,31)>>> today == date.fromtimestamp(time.time()) #True
>>> my_birthday =date(today.year,6,24)>>>if my_birthday < today:
my_birthday = my_birthday.replace(year = today.year +1) #datetime.date(2015,6,24)>>> time_to_birthday =abs(my_birthday - today)>>> time_to_birthday.days
297>>> d = date.fromordinal(735678) #日付1以降.1.0001から735678日
>>> d
datetime.date(2015,3,21)>>> t = d.timetuple()>>>for i in t:print(i,end='')2015321000580-1>>> ic = d.isocalendar()>>>for i in ic:print(i)2015126>>> d.isoformat()'2015-03-21'>>> d.strftime("%d/%m/%y")'21/03/15'>>> d.strftime("%A %d. %B %Y")'Saturday 21. March 2015'>>>'The {1} is {0:%d}, the {2} is {0:%B}.'.format(d,"day","month")'The day is 21, the month is March.'
(3) 時間オブジェクト
timeオブジェクトは時刻を表し、tzinfoオブジェクトを介して調整できます。
範囲:
# 内部のパラメータはインスタンスの属性ですが、読み取り専用時間です.hour
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)0<= hour <240<= minute <600<= second <600<= microsecond <1000000
注:パラメーターが範囲外の場合、ValueErrorが発生します
time.isoformat()-「HH:MM:SS.mmmmmm」などのISO8601形式の日付文字列を返します
time。** str **()-時間オブジェクトtの場合、str(t)はt.isoformat()と同等です。
time.strftime(format)-以下に詳述するように、時間を表すカスタム形式の文字列を返します
time。** format **(format)-time.strftime(format)と同じです。これにより、str.format()を呼び出すときに時間オブジェクト文字列を指定できます。
time.utcoffset()-tzinfo属性がNoneの場合は、Noneを返します。それ以外の場合は、self.tzinfo.utcoffset(self)を返します。
time.dst()-tzinfo属性がNoneの場合は、Noneを返します。それ以外の場合は、self.tzinfo.dst(self)を返します。
time.tzname()-tzinfo属性がNoneの場合は、Noneを返します。それ以外の場合は、self.tzinfo.tzname(self)を返します。
# プログラミングを学び、Cを釣る
>>> from datetime import time, timedelta, tzinfo
>>> classGMT1(tzinfo):
def utcoffset(self, dt):returntimedelta(hours=1)
def dst(self, dt):returntimedelta(0)
def tzname(self, dt):return"ヨーロッパ/プラハ">>> t =time(14,10,30, tzinfo=GMT1())>>> t
datetime.time(14,10,30, tzinfo=<__main__.GMT1 object at 0x02D7FE90>)>>> gmt =GMT1()>>> t.isoformat()'14:10:30+01:00'>>> t.dst()
datetime.timedelta(0)>>> t.tzname()'ヨーロッパ/プラハ'>>> t.strftime("%H:%M:%S %Z")'14:10:30 ヨーロッパ/プラハ'>>>'The {} is {:%H:%M}.'.format("time", t)'The time is 14:10.'
timeitモジュールは、小さなコードの実行時間を正確に測定します。コマンドラインインターフェイスで直接使用することも、モジュールをインポートして呼び出すこともできます。モジュールは、実行時間を測定しがちなエラーを柔軟に回避します。
このモジュールは、3つのユーティリティ関数と1つのパブリッククラスを定義します。
# コマンドラインインターフェイス構文
python -m timeit [-n N][-r N][-s S][-t][-c][-h][statement ...](1)timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000) #タイマーインスタンスを作成します。パラメーターは、stmt(測定する必要のあるステートメントまたは関数)、setup(ビルド環境の初期化コードまたはインポートステートメント)、timer(タイミング関数)、number(各測定でステートメントが実行される回数)です。(2) timeit.repeat(stmt='pass', setup='pass', timer=<default timer>, repeat=3, number=1000000) #繰り返し(繰り返し測定の数)(3)timeit.default_timer() #デフォルトのタイマー、通常は時間.perf_counter()この方法は、どのプラットフォームでも最高精度のタイマーを提供できます(自然時間のみを記録し、自然時間の記録は、コンピューターの負荷など、他の多くの要因の影響を受けます)。(4)classtimeit.Timer(stmt='pass', setup='pass', timer=<timer function>) #小さなコードの実行速度を計算するためのクラス。最初の2つのパラメーターの両方に複数のステートメントを含めることができます。複数のステートメントの間にセミコロンを使用します(;)または新しい行で区切られます。
# stmtおよびsetupパラメーターは、呼び出すことはできるがパラメーターを持たないオブジェクトにすることもできます。これにより、タイミング関数にネストされ、timeitになります。()実行されました。追加の呼び出しにより、タイミングのオーバーヘッドは比較的小さいことに注意してください
## timeit属性
- timeit(number=1000000) #機能:ステートメントの実行時間を何度も計算します
- repeat(repeat=3, number=1000000) #機能:timeitを繰り返し呼び出す()-print_exc(file=None) #機能:タイミングコードのトレースバックを出力する(トレースバック)
# 標準のバックトラッキングの利点は、コンパイルされたテンプレートにソースステートメントの行が表示されることです。オプションのfileパラメーターは、トレースバックが送信される場所を指定します。デフォルトでは、sysに送信されます。.stderr。
WeiyiGeek。コマンドラインパラメータ
# コマンドライン
> python -m timeit -s "for i in range(10): oct(i)"-p
50000000 loops, best of5:6.25 nsec per loop
> python -m timeit -s "for i in range(10): oct(i)"-r 1-n 11 loop, best of1:365 nsec per loop
# IDLE呼び出しの実行
>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)0.8187260627746582>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)0.5858950614929199>>> timeit.Timer('for i in range(10): oct(i)','gc.enable()').timeit()0.9954580070000247>>> timeit.timeit('text.find(char)', setup='text = "I love FishC.com!"; char = "o"')1.7246671520006203
# 実際のケース
#! /usr/bin/python
def test():"""Stupid test timeit module function"""
L =[i for i inrange(1000)]if __name__ =='__main__':import timeit #インポートモジュール
t = timeit.Timer()try:print("実行時間:",end=" ")print(timeit.timeit(stmt="test()", setup="from __main__ import test",number=100))
except Exception:print('スローされた例外:')
t.print_exc()
# > python demo6.2.py
# 実行時間:0.0026121469999999952
予防:
説明:印刷された出力データを美化するために使用され、非常に実用的です。
使用例:
# 例1.
sys.path
[' D:\\Program Files\\JetBrains\\PyCharm2019\\helpers\\pydev','D:\\Program Files\\JetBrains\\PyCharm2019\\helpers\\pycharm_display','D:\\Program Files\\JetBrains\\PyCharm2019\\helpers\\third_party\\thriftpy','E:\\githubProject\\Study-Promgram\\Python3','E:/githubProject/Study-Promgram/Python3']
pprint.pprint(sys.path) #美しい出力
[' D:\\Program Files\\JetBrains\\PyCharm2019\\helpers\\pydev','D:\\Program Files\\JetBrains\\PyCharm2019\\helpers\\pycharm_display','D:\\Program Files\\JetBrains\\PyCharm2019\\helpers\\third_party\\thriftpy','E:\\githubProject\\Study-Promgram\\Python3','E:/githubProject/Study-Promgram/Python3']
説明:リクエストを使用してネットワークリクエストを送信するのは非常に簡単です。モジュールをインポートするだけです。
参照:[https://2.python-requests.org//zh_CN/latest/user/advanced.html#advanced](https://2.python-requests.org//zh_CN/latest/user/advanced.html#advanced)
モジュール方式:
#1. カスタムリクエストヘッダーを取得する/リクエストパラメータ/クッキーを設定する/リダイレクトを無効にする
# SSL認証はデフォルトでTrueに設定できます。
# 検証オプションは、ホスト証明書にのみ適用されます。着信CAを確認する_BUNDLEファイルのパス、または信頼できるCA証明書ファイルを含むフォルダーのパス
# クライアント証明書:ローカル証明書をクライアント証明書として指定します。これは、単一のファイル(キーと証明書を含む)または2つのファイルパスを含むタプルにすることができます。
# ネットワークリクエストを行った後、応答本文はすぐにダウンロードされます。この動作は、応答がアクセスされるまで応答本文のダウンロードを遅らせるために、ストリームパラメータによってオーバーライドできます。.コンテンツ属性
r = requests.get(url, headers={'user-agent':'my-app/0.0.1'},param={'key1':"value"}, cookies=dict(cookies_are='working'),allow_redirects=False,timeout=0.001,verify=True,verify='/path/to/certfile',cert=('/path/client.cert','/path/client.key'),stream=Truem,proxies ={"http":"http://10.10.1.10:3128","https":"http://10.10.1.10:1080",})
# 注:基本的なHTTPプロキシに加えて、RequestはSOCKSプロトコルプロキシpipインストール要求もサポートします[socks],使用方法は以下の通りです。
# proxies ={
# ' http':'socks5://user:[email protected]:port',
# ' https':'socks5://user:[email protected]:port'
# }
#2. リクエスト後
r = requests.post("http://httpbin.org/post", data={'key1':'value1','key2':'value2'})
r = requests.post("https://api.github.com/some/endpoint", data=json.dumps(payload)) #Github API v3は、JSONとしてエンコードされたPOSTを受け入れます/パッチデータ
#3. セッションオブジェクト
s = requests.Session()
r = s.get('http://httpbin.org/cookies', cookies={'from-my':'browser'})
# または
with requests.Session()as s:
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') #例外が発生した場合でも、withブロックの終了後にセッションを閉じることができることを確認してください。
モジュール属性:
requestsOBJ.status_code :応答ステータスコード要求.codes.組み込みのステータスコードクエリオブジェクト
requestsOBJ.headers :サーバー応答ヘッダー
requestsOBJ.url :オブジェクトによって要求されたURLのクエリ文字列
requestsOBJ.text :サーバーの応答の内容を読む,サーバーからコンテンツを自動的にデコードします。ほとんどのユニコード文字セットはシームレスにデコードできます
requestsOBJ.content :テキスト以外のリクエストの場合は、リクエストの応答本文にバイト単位でアクセスします(バイナリ)、gzipを自動的にデコードし、送信コード化された応答データをデフレートします
requestsOBJ.エンコーディング:解析エンコーディングを設定するためにリクエストで使用されるエンコーディングを表示しますr.encoding ='ISO-8859-1'
r.history :リダイレクトとリクエスト履歴,デフォルトでHEADを除く,リクエストはすべてのリダイレクトを自動的に処理します。
r.raw #サーバーから生のソケット応答をフェッチすると、rにアクセスできます。.raw,最初のリクエストでストリームが設定されていることが前提です=Trueはrも使用できます.raw.read(10)
r.json() #リクエストには、JSONデータの処理に役立つ組み込みのJSONデコーダーもあります。
r.cookies['example_cookie_name'] #ウェブサイトから返されたCookieを取得します
requests.exceptions.RequestException
から継承されます実際のケース:
# 例1.さまざまなリクエストがあります/post/put/delete/head/オプションなど。;>>> r = requests.get('https://api.github.com/events',params ={'key1':'value1','key2':'value2'}) #URLパラメータを渡す
>>> r = requests.post('http://httpbin.org/post', data ={'key':'value'})>>> r = requests.put('http://httpbin.org/put', data ={'key':'value'})>>> r = requests.delete('http://httpbin.org/delete')>>> r = requests.head('http://httpbin.org/get')>>> r = requests.options('http://httpbin.org/get')
# 例2.マルチパートコードをPOSTする(Multipart-Encoded)資料
>>> url ='http://httpbin.org/post'>>> files ={'file':open('report.xls','rb'),'application/vnd.ms-excel',{'Expires':'0'}}>>> files ={'file':('report.csv','some,data,to,send\nanother,row,to,send\n')} #受信した文字列をファイルとして送信することもできます
>>> r = requests.post(url, files=files)
# 例3.ブロックエンコーディングで複数のファイルをPOSTする
# これを実現するには、ファイルをタプルのリストに設定します。タプルの構造は次のとおりです。(form_field_name, file_info):<input type="file" name="images" multiple="true" required="true"/>>>> url ='http://httpbin.org/post'>>> multiple_files =[('images',('foo.png',open('foo.png','rb'),'image/png')),('images',('bar.png',open('bar.png','rb'),'image/png'))]>>> r = requests.post(url, files=multiple_files)>>> r.text
# 例3.返されるCookieのオブジェクトはRequestsCookieJarで、これは辞書のように動作しますが、インターフェイスはより完全で、クロスドメインおよびクロスパスの使用に適しています。
>>> jar = requests.cookies.RequestsCookieJar()>>> jar.set('tasty_cookie','yum', domain='httpbin.org', path='/cookies')>>> jar.set('gross_cookie','blech', domain='httpbin.org', path='/elsewhere')>>> url ='http://httpbin.org/cookies'>>> r = requests.get(url, cookies=jar)>>> r.text
'{" cookies": {"tasty_cookie": "yum"}}'
# 例4.ウェブサイトをリクエストして情報を返す
def get(url):try:
r = requests.get(url)
except ConnectionError as e:print("[*] Error = "+str(e))exit(0)
except TimeoutError as e:print("[*] Time = "+str(e))exit(1)
except Exception as e:print("[*] Other Error = "+str(e))exit(2)print("URL:",r.url,"\nHeader:",end="")pprint(r.headers)print("Status:",r.status_code)print("Encoding:",r.encoding)
r.encoding ="utf-8" #正午に文字が文字化けするのを防ぐために、コンテンツutf8エンコーディングを出力します
print(r.history)
# 実行結果情報#
# Connected to pydev debugger(build 191.7479.30)
# URL: http://127.0.0.1:4000/archives/
# Header:{'X-Powered-By':'Hexo','Content-Type':'text/html','Date':'Fri, 12 Jul 2019 07:21:36 GMT','Connection':'keep-alive','Transfer-Encoding':'chunked'}
# Status: 200
# Encoding: ISO-8859-1
# []
# ('<! DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" '
Recommended Posts