python基礎-常用內置包

来源:https://www.cnblogs.com/white-list/archive/2022/12/09/16963629.html
-Advertisement-
Play Games

內置包是python自帶的一些功能模塊,有需求時可以在自己文件中直接導入使用。 1.datetime包 python中的時間包,可以在業務開發中輔助我們處理時間信息; # datetime可以獲取當前時間 from datetime import datetime re = datetime.now ...


  內置包是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文件,此時就可以拿到執行時傳入的參數了,工作中很常用;

     

 

 

總結

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JSON&Ajax03 4.jQuery的Ajax請求 原生Ajax請求問題分析: 編寫原生的Ajax要寫很多的代碼,還要考慮瀏覽器相容問題,使用不方便 在實際工作中,一般使用JavaScript的框架(比如jquery)發動Ajax請求,從而解決這個問題。 4.1jQuery Ajax操作方法 在 ...
  • 案例介紹 歡迎來到我的小院,我是霍大俠,恭喜你今天又要進步一點點了!我們來用CSS編程實戰案例,使用列表標簽完成一個下拉菜單樣式的表單部件。 案例演示 運行代碼後在瀏覽器彈出由標簽組成的下拉菜單樣式的列表。 源碼學習 進入核心代碼學習,我們先來看HTML模板中的代碼。 <!-- 有個小院-興趣編程 ...
  • 1.vite+TS+Vue3 npm create vite Project name:... yourProjectName Select a framework:>>Vue Select a variant:>>Typescrit 2. 修改vite基本配置 配置 Vite {#configur ...
  • ChatGpt-qq-bot 準備 一個伺服器:Windos,Centos,Ubuntu 環境:Python 一個QQ號用作機器人 一個OpenAI賬號(註冊教程自行搜索) 搭建 這裡我用Centos7為例進行教程,其他系統類似 註冊OpenGPT 一瓶可樂錢註冊OpenGPT,教程鏈接:https ...
  • # 一個商品 名稱 價格 庫存 總銷量 # 存放商品的數據類型 str set list tuple dict # 綜合考慮,選擇字典 dict_data = {} # {名稱: {price: 價格, inventory: 庫存, sales: 總銷量}} def exist_goods(good ...
  • 一、TCP/IP網路模型 應用層 負責在不同的應用層協議的約束下,如http、dns、ftp,通過應用進程間的交互來完成特定網路應用 應用層只需要專註於為用戶提供應用功能即可,無需關心數據如何傳輸 應用層是工作在操作系統中的用戶態,傳輸層及以下則工作在內核態 傳輸層 負責進一步為兩台主機設備中進程之 ...
  • Gradle 使用maven本地倉庫 帶來的思考 本篇主要探究一下 在使用Gradle 的時候一般會配置 maven 的本地倉庫的,那是不是Gradle 可以直接使用 maven本地倉庫的jar呢 ? 下麵來探究一下 思考 當我們在使用Gradle的時候 一配置一個 mavenLocal() 代表它 ...
  • 前言 本篇幅是繼 MyBatis詳解(一)的下半部分。 MyBatis執行Sql的流程分析 【1】基於前面已經將XML文件進行build解析了並且返回了SqlSessionFactory 【1.1】那麼分析SqlSessionFactory.openSession()方法是怎麼返回SqlSessio ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...