python基礎-常用內建包
阿新 • • 發佈:2022-12-09
內建包是python自帶的一些功能模組,有需求時可以在自己檔案中直接匯入使用。
1.datetime包
python中的時間包,可以在業務開發中輔助我們處理時間資訊;
# datetime可以獲取當前時間 from datetime import datetime re = datetime.now() print(re) # 2022-12-07 16:32:37.000297 # 或者 import datetime re = datetime.datetime.now() print(re) # 2022-12-07 16:33:41.135512 ''' datetime可以獲取時間間隔 利用timedelta方法 timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,week=0) 所需的間隔引數可按需新增 一般結合datetime.datetime.now()使用 ''' # eg:獲取昨天時間物件 import datetime yesterday = datetime.datetime.now() - datetime.timedelta(days=1) # 用加減表示時間得前後 print(yesterday) # 2022-12-06 16:52:49.028523 print(type(yesterday)) # <class 'datetime.datetime'>
上面的例子中獲取到的時間值都是一個datetime時間物件,不方便資訊儲存和傳遞,可以轉化成字串處理;
import datetime now = datetime.datetime.now() now_str = now.strftime('%Y-%m-%d %H:%M:%S') print(now_str) # 2022-12-07 17:40:09 (這種時間格式就符合我們平常的使用和展示了) print(type(now_str)) # <class 'str'> after_hour = datetime.datetime.now() + datetime.timedelta(hours=1) print(after_hour) # 2022-12-07 18:40:09.615895 print(after_hour.strftime('%Y-%m-%d %H:%M:%S')) # 2022-12-07 18:40:09 # 有時還需要反向操作,將時間字串轉化為datetime時間物件 # 將'2022-12-07 17:45:09'轉化成datetime時間物件(此時字串內的時間格式要是標準的,否則會報錯) datetime_object = datetime.datetime.strptime('2022-12-07 17:45:09', '%Y-%m-%d %H:%M:%S') print(datetime_object) # 2022-12-07 17:45:09 print(type(datetime_object)) # <class 'datetime.datetime'> # 此時可以拿著時間物件進行時間間隔等的計算了
2.time包
同樣是用於處理時間、轉換時間格式的模組;
''' 先看下什麼是時間戳: 英文用timestamp表示 是1970年1月1日00時00分00秒至今的總毫秒數 (python中預設是按秒錶示時間戳的) python中時間戳是float型別 ''' import time # time獲取當前時間戳 now_timestamp = time.time() print(now_timestamp) # 1670470817.385102 (返回一個秒級別的時間戳,列印的是指令碼真正執行時的時間戳) print(type(now_timestamp)) # <class 'float'> # 獲取本地時間 time.localtime(timestamp) # 我們在使用time.time()獲取到的時間戳並不能直觀看出時間,可以藉助localtime獲得直觀的時間格式 # 所以localtime一般用於轉換時間戳為可讀時間格式物件的場景 time_local = time.localtime(now_timestamp) print(time_local) # time.struct_time(tm_year=2022, tm_mon=12, tm_mday=8, tm_hour=11, tm_min=40, tm_sec=17, tm_wday=3, tm_yday=342, tm_isdst=0) print(type(time_local)) # <class 'time.struct_time'> ''' localtime返回的是一個time時間物件 各引數簡介: tm_year 四位年數 tm_mon 月 1-12 tm_mday 日 1-31 tm_hour 0-23 t_min 0-59 tm_sec 秒 0-61 (閏月問題) tm_wday 一週中的第幾天 0-6(0是週一) tm_yday 一年的第幾日 1-366(儒略曆) tm_isdst 夏令時 -1,0,1是否是夏時令 ''' # 不傳時間戳引數 timestamp可不傳(不傳的時候預設使用當前時間戳) print(time.localtime()) # time.struct_time(tm_year=2022, tm_mon=12, tm_mday=8, tm_hour=11, tm_min=41, tm_sec=22, tm_wday=3, tm_yday=342, tm_isdst=0) # 倒退100000秒 re = time.time() - 100000 print(time.localtime(re)) # time.struct_time(tm_year=2022, tm_mon=12, tm_mday=7, tm_hour=7, tm_min=58, tm_sec=53, tm_wday=2, tm_yday=341, tm_isdst=0) # 若想讓時間戳單位和其它語言單位一致變成毫秒,直接乘1000即可 re2 = time.time() * 1000 print(re2) # 1670471309818.359
# 暫停函式 sleep(sec) 讓程式暫停sec秒數
import time
print(time.time()) # 1670471809.716068
time.sleep(5)
print(time.time()) # 1670471814.7167113 (可以看到相差了五秒)
# time.strftime(format, t) 將時間物件t轉化為所要的格式
import time
# 獲取當前時間的標準格式
re = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(re) # 2022-12-08 12:04:26
print(type(re)) # <class 'str'>
# 同樣有反向操作time.strptime(time_str, format)
re2 = time.strptime("2022-12-7 12:30", "%Y-%m-%d %H:%M")
print(re2)
# time.struct_time(tm_year=2022, tm_mon=12, tm_mday=7, tm_hour=12, tm_min=30, tm_sec=0, tm_wday=2, tm_yday=341, tm_isdst=-1)
print(type(re2))
# <class 'time.struct_time'>
# 補充下datetime生成時間戳的方法
# datetime.datetime.timestamp(datetime.datetime.now())
# 相當於將時間物件轉化為時間戳格式
import datetime
print(datetime.datetime.timestamp(datetime.datetime.now())) # 1670472569.847376
# 反向操作
print(datetime.datetime.fromtimestamp(1670472569.847376)) # 2022-12-08 12:09:29.847376
print(type(datetime.datetime.fromtimestamp(1670472569.847376))) # <class 'datetime.datetime'>
3.os包
包含普遍的系統操作,比如路徑獲取、檔案建立刪除等;
'''
os.getcwd() 獲取當前路徑 返回字串
os.listdir(path) 獲取指定path路徑下的檔案或資料夾,返回一個列表
os.makedirs(path) 建立多級資料夾
'''
import os
current_path = os.getcwd()
print(current_path) # D:\python_exercise
# os.makedirs(f'{current_path}\\test1\\test2')
# 此時當前路徑下test1和test2資料夾均不存在,會同時被建立
# 如果test2存在時,會提示報錯test2已存在
os.makedirs('test3') # 若只傳遞檔名,會自動在當前指令碼所在目錄下建立資料夾
print(os.listdir(current_path))
'''
['.idea', 'main.py', 'test', 'test.py', 'test1', 'test2.py', 'test5.py', 'test6.py', 'test7.py', 'test_calss.py',
'test_class2.py', 'test_class3.py', 'try_except.py', 'tt.py']
檔案、資料夾都會被打印出來
'''
'''
os.removedirs(path) 刪除空資料夾
os.rename(old_name, new_name) 給檔案或資料夾重新命名
os.rmdir(path) 刪除空資料夾
'''
import os
# os.removedirs('D:\python_exercise\\test1')
'''
OSError: [WinError 145] 目錄不是空的。: 'D:\\python_exercise\\test1'
此時test1下還有test2資料夾,刪除時會報錯
'''
# os.removedirs('D:\python_exercise\\test1\\test2')
'''
此時test2為空資料夾,test2可以正常被刪除
若test1中只有空資料夾test2,操作後test1、test2均會被刪除
'''
# 同樣場景test1中只有空資料夾test2
# os.rmdir('D:\python_exercise\\test1\\test2') # 操作後test1、test2也均會被刪除
# 當我們就是要刪除資料夾下所有檔案時,可以利用shutil庫
import shutil
# shutil.rmtree('D:\python_exercise\\test1\\test2') # test2及test2下的所有檔案、資料夾均會被刪除
# rename重新命名
os.rename('D:\python_exercise\\test1', 'D:\python_exercise\\test11111')
'''
os.path.exists(path) 判斷檔案或路徑是否存在
os.path.isdir(path) 判斷是否是資料夾
os.path.isabs(path) 判斷是否是絕對路徑
os.path.isfile(path) 判斷是否是檔案
os.path.join(path, path*) 路徑字串合併
os.path.split(path) 以層路徑為基準切割
'''
import os
# 判斷當前路徑下是否存在test資料夾
re = os.path.exists('test')
print(re) # True
# 判斷當前路徑下是否存在test.py檔案
re = os.path.exists('test.py')
print(re) # True
# 按絕對路徑填寫
re = os.path.exists("D:\python_exercise\\test.py")
print(re) # True
re = os.path.isdir('test')
print(re) # True
re = os.path.isdir('test.py')
print(re) # False
re = os.path.isabs('test')
print(re) # False
re = os.path.isabs('D:\python_exercise\\test.py')
print(re) # True
re = os.path.isfile('test')
print(re) # False
re = os.path.isfile('test.py')
print(re) # True
re = os.path.join('D:\python_exercise', 'test.py')
print(re) # D:\python_exercise\test.py
re = os.path.split('D:\python_exercise\\test.py')
print(re) # ('D:\\python_exercise', 'test.py')
4.sys包
也是一個系統相關操作的模組;
'''
sys.modules py啟動時自動載入的模組字典
'''
import sys
print(sys.modules)
'''
{'sys': <module 'sys' (built-in)>, 'builtins': <module 'builtins' (built-in)>,
'_frozen_importlib': <module '_frozen_importlib' (frozen)>, '_imp': <module '_imp' (built-in)>,
'_thread': <module '_thread' (built-in)>, '_warnings': <module '_warnings' (built-in)>,
'_weakref': <module '_weakref' (built-in)>, '_io': <module '_io' (built-in)>,
'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>,
'_frozen_importlib_external': <module '_frozen_importlib_external' (frozen)>, 'time': <module 'time' (built-in)>,
'zipimport': <module 'zipimport' (frozen)>, '_codecs': <module '_codecs' (built-in)>,
'codecs': <module 'codecs' from 'D:\\python3.10.5\\lib\\codecs.py'>,
'encodings.aliases': <module 'encodings.aliases' from 'D:\\python3.10.5\\lib\\encodings\\aliases.py'>,
'encodings': <module 'encodings' from 'D:\\python3.10.5\\lib\\encodings\\__init__.py'>,
'encodings.utf_8': <module 'encodings.utf_8' from 'D:\\python3.10.5\\lib\\encodings\\utf_8.py'>,
'_signal': <module '_signal' (built-in)>, '_abc': <module '_abc' (built-in)>,
'abc': <module 'abc' from 'D:\\python3.10.5\\lib\\abc.py'>, 'io': <module 'io' from 'D:\\python3.10.5\\lib\\io.py'>,
'__main__': <module '__main__' from 'D:\\python_exercise\\main.py'>, '_stat': <module '_stat' (built-in)>,
'stat': <module 'stat' from 'D:\\python3.10.5\\lib\\stat.py'>,
'_collections_abc': <module '_collections_abc' from 'D:\\python3.10.5\\lib\\_collections_abc.py'>,
'genericpath': <module 'genericpath' from 'D:\\python3.10.5\\lib\\genericpath.py'>,
'ntpath': <module 'ntpath' from 'D:\\python3.10.5\\lib\\ntpath.py'>,
'os.path': <module 'ntpath' from 'D:\\python3.10.5\\lib\\ntpath.py'>,
'os': <module 'os' from 'D:\\python3.10.5\\lib\\os.py'>, '_sitebuiltins': <module '_sitebuiltins'
from 'D:\\python3.10.5\\lib\\_sitebuiltins.py'>, '_codecs_cn': <module '_codecs_cn' (built-in)>,
'_multibytecodec': <module '_multibytecodec' (built-in)>, 'encodings.gbk': <module 'encodings.gbk'
from 'D:\\python3.10.5\\lib\\encodings\\gbk.py'>, 'site': <module 'site' from 'D:\\python3.10.5\\lib\\site.py'>,
'__future__': <module '__future__' from 'D:\\python3.10.5\\lib\\__future__.py'>,
'itertools': <module 'itertools' (built-in)>, 'keyword': <module 'keyword' from 'D:\\python3.10.5\\lib\\keyword.py'>,
'_operator': <module '_operator' (built-in)>, 'operator': <module 'operator' from 'D:\\python3.10.5\\lib\\operator.py'>,
'reprlib': <module 'reprlib' from 'D:\\python3.10.5\\lib\\reprlib.py'>,
'_collections': <module '_collections' (built-in)>, 'collections': <module 'collections'
from 'D:\\python3.10.5\\lib\\collections\\__init__.py'>, 'types': <module 'types' from 'D:\\python3.10.5\\lib\\types.py'>,
'_functools': <module '_functools' (built-in)>, 'functools': <module 'functools' from 'D:\\python3.10.5\\lib\\functools.py'>,
'importlib._bootstrap': <module '_frozen_importlib' (frozen)>, 'importlib._bootstrap_external':
<module '_frozen_importlib_external' (frozen)>, 'warnings': <module 'warnings' from 'D:\\python3.10.5\\lib\\warnings.py'>,
'importlib': <module 'importlib' from 'D:\\python3.10.5\\lib\\importlib\\__init__.py'>, 'importlib._abc':
<module 'importlib._abc' from 'D:\\python3.10.5\\lib\\importlib\\_abc.py'>, 'contextlib': <module 'contextlib'
from 'D:\\python3.10.5\\lib\\contextlib.py'>, 'importlib.util': <module 'importlib.util'
from 'D:\\python3.10.5\\lib\\importlib\\util.py'>, '_struct': <module '_struct' (built-in)>, 'struct': <module 'struct'
from 'D:\\python3.10.5\\lib\\struct.py'>, 'six': <module 'six' from 'D:\\python3.10.5\\lib\\site-packages\\six.py'>}
'''
'''
sys.path
返回當前py的環境路徑列表
比如當前工作路徑、python site-packages三方安裝包路徑等
'''
print(sys.path)
'''
['D:\\python_exercise', 'D:\\python_exercise', 'D:\\python3.10.5\\python310.zip', 'D:\\python3.10.5\\DLLs',
'D:\\python3.10.5\\lib', 'D:\\python3.10.5', 'D:\\python3.10.5\\lib\\site-packages']
'''
'''
sys.exit()
退出程式
'''
# sys.exit(0) # Process finished with exit code 0
# print('22') # exit後面的內容不再執行
# sys.exit(1) # Process finished with exit code 1
'''
sys.getdefaultencoding()
獲取當前編碼格式
'''
re = sys.getdefaultencoding()
print(re) # utf-8
print(type(re)) # <class 'str'>
'''
sys.platform
返回電腦的系統
'''
re = sys.platform
print(re) # win32
print(type(re)) # <class 'str'>
'''
sys.version
獲取py版本
'''
re = sys.version
print(re) # 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)]
print(type(re)) # <class 'str'>
sys.argv
獲取以python xxx.py形式在終端命令列中執行時傳入的引數,結果儲存於列表;
列表的第0個元素是檔案本身,後面的引數從1開始以此類推;
# python_exercise/main.py
args = sys.argv
print(args)
在終端執行main.py檔案,此時就可以拿到執行時傳入的引數了,工作中很常用;
總結