pythonSTL---sys

sys 是 Python 標準庫中的一個內置模塊,它提供了許多與 Python 解釋器和系統環境進行交互的功能。

sys方法

1. 導入 sys 模塊

在使用 sys 庫的功能之前,需要先導入它:

import sys

2. 命令行參數 (sys.argv)

sys.argv 是一個包含命令行參數的列表。其中,sys.argv[0] 是腳本的名稱,后續的元素是傳遞給腳本的參數。

import sys# 打印腳本名稱
print(f"腳本名稱: {sys.argv[0]}")# 打印所有命令行參數
for i, arg in enumerate(sys.argv):print(f"參數 {i}: {arg}")

假設將上述代碼保存為 test.py,在命令行中運行 python test.py arg1 arg2,輸出結果將顯示腳本名稱和傳遞的參數。

3. Python 解釋器信息

3.1 sys.version

sys.version 是一個字符串,包含了 Python 解釋器的版本信息,如 Python 版本號、編譯信息等。

import sys
print(sys.version)
3.2 sys.version_info

sys.version_info 是一個 namedtuple,包含了 Python 版本的主要信息,如主版本號、次版本號、微版本號等。

import sys
print(sys.version_info)
print(f"主版本號: {sys.version_info.major}")
print(f"次版本號: {sys.version_info.minor}")

4. 系統路徑 (sys.path)

sys.path 是一個包含模塊搜索路徑的列表。Python 在導入模塊時,會按照這個列表中的路徑順序進行搜索。

import sys# 打印系統路徑
for path in sys.path:print(path)# 可以動態添加路徑
sys.path.append('/path/to/your/module')

5. 退出 Python 解釋器 (sys.exit())

sys.exit() 函數用于退出 Python 解釋器。可以傳遞一個整數參數作為退出狀態碼,默認狀態碼為 0 表示正常退出。

import systry:# 一些代碼邏輯result = 1 / 0  # 模擬異常
except ZeroDivisionError:print("發生除零錯誤,程序退出")sys.exit(1)  # 以狀態碼 1 退出

6. 標準輸入、輸出和錯誤流

sys 模塊提供了對標準輸入 (sys.stdin)、標準輸出 (sys.stdout) 和標準錯誤 (sys.stderr) 的訪問。

6.1 標準輸出重定向
import sys# 保存原始的標準輸出
original_stdout = sys.stdout# 打開一個文件以寫入模式
with open('output.txt', 'w') as f:# 將標準輸出重定向到文件sys.stdout = fprint("這行文本將被寫入文件")# 恢復標準輸出
sys.stdout = original_stdout
print("這行文本將顯示在控制臺")
6.2 標準輸入讀取
import sys# 從標準輸入讀取一行
line = sys.stdin.readline()
print(f"你輸入的內容是: {line.strip()}")

7. 遞歸深度限制 (sys.getrecursionlimit()sys.setrecursionlimit())

Python 解釋器對遞歸調用的深度有一個默認限制,以防止無限遞歸導致棧溢出。可以使用 sys.getrecursionlimit() 獲取當前的遞歸深度限制,使用 sys.setrecursionlimit() 設置新的遞歸深度限制。

import sys# 獲取當前遞歸深度限制
current_limit = sys.getrecursionlimit()
print(f"當前遞歸深度限制: {current_limit}")# 設置新的遞歸深度限制
sys.setrecursionlimit(2000)
new_limit = sys.getrecursionlimit()
print(f"新的遞歸深度限制: {new_limit}")

8. 平臺信息 (sys.platform)

sys.platform 是一個字符串,用于標識當前 Python 解釋器運行的操作系統平臺。

import sysprint(f"當前操作系統平臺: {sys.platform}")

常見的平臺標識符包括 'win32'(Windows)、'linux'(Linux)、'darwin'(macOS)等。

9. 最大整數值 (sys.maxsize)

sys.maxsize 表示當前平臺上 Python 解釋器所能表示的最大整數值。

import sysprint(f"最大整數值: {sys.maxsize}")

10. 內置模塊信息 (sys.builtin_module_names)

sys.builtin_module_names 是一個包含所有內置模塊名稱的元組。

import sysprint("所有內置模塊名稱:")
for module_name in sys.builtin_module_names:print(module_name)

11. 內存使用信息 (sys.getsizeof())

sys.getsizeof() 函數用于返回對象占用的內存大小(以字節為單位)。

import sysmy_list = [1, 2, 3, 4, 5]
list_size = sys.getsizeof(my_list)
print(f"列表占用的內存大小: {list_size} 字節")

os模塊常量

一、平臺標識常量

1. os.name

對應系統典型場景
posixLinux/macOS判斷是否支持 Unix 特性
ntWindows處理路徑分隔符差異
javaJython 環境特殊運行環境檢測
if os.name == 'posix':print("正在類 Unix 系統運行")

二、路徑操作常量

1. 路徑分隔符

常量值 (Win/Linux)作用
os.sep\ / /路徑層級分隔符(推薦替代硬編碼符號)
os.altsep/ / None備用分隔符(Win 兼容 Unix 路徑)
os.extsep.文件名與擴展名的分隔符

跨平臺路徑構建示例

config_path = ["data", "config", "app.yaml"]
full_path = os.sep.join(config_path)  # 自動適配系統分隔符

2. 路徑組合符

常量值 (Win/Linux)應用場景
os.pathsep; / :環境變量多路徑分隔符(PATH)
os.defpath.;/bin / 類似值可執行文件默認搜索路徑

三、目錄符號常量

常量功能說明
os.curdir.表示當前目錄
os.pardir..表示父目錄

路徑解析示例

parent_dir = os.path.abspath(os.path.join(os.curdir, os.pardir))

四、文件操作常量

1. 文件存在性及權限檢查

常量二進制掩碼用途
os.F_OK0檢查文件是否存在
os.R_OK4檢查讀權限
os.W_OK2檢查寫權限
os.X_OK1檢查執行權限

權限驗證代碼

if os.access("/usr/bin/python", os.X_OK):print("文件可執行")

2. 文件打開模式(需配合 os.open

常量功能說明
os.O_RDONLY只讀模式
os.O_WRONLY只寫模式
os.O_RDWR讀寫模式
os.O_CREAT文件不存在時創建
os.O_EXCL與 O_CREAT 配合使用防覆蓋

文件創建示例

fd = os.open("data.log", os.O_WRONLY | os.O_CREAT, 0o644)

3. 文件指針定位

常量對應值描述
os.SEEK_SET0文件起始位置
os.SEEK_CUR1當前指針位置
os.SEEK_END2文件末尾位置

五、特殊設備常量

常量路徑 (Win/Linux)用途
os.devnullnul / /dev/null空設備(丟棄輸出)

使用示例

with open(os.devnull, 'w') as f:sys.stdout = f  # 禁用標準輸出

六、其他實用常量

常量說明
os.linesep系統換行符(\n/\r\n
os.supports_follow_symlinks函數是否支持符號鏈接追蹤

綜合應用場景

跨平臺路徑處理模板

import osdef safe_join(base, *paths):"""跨平臺安全路徑拼接"""full_path = os.path.abspath(os.path.join(base, *paths))if not os.path.exists(full_path):os.makedirs(full_path, exist_ok=True)return full_path.replace(os.sep, '/')  # 統一為 Unix 風格路徑

權限檢查工具函數

def validate_permissions(filepath):"""詳細權限檢查"""checks = [(os.F_OK, "存在性"),(os.R_OK, "可讀性"),(os.W_OK, "可寫性"),(os.X_OK, "可執行性")]for flag, desc in checks:print(f"{desc}: {'√' if os.access(filepath, flag) else '×'}")

注意事項

  1. 平臺差異性
    Windows 和 Linux 的常量表現不同,建議通過 os.path 模塊函數代替直接操作常量

  2. 常量只讀性
    所有 os 模塊常量均為只讀,修改會觸發 AttributeError

  3. 版本兼容
    Python 3.10+ 新增 os.O_TMPFILE(Linux 專屬)等常量,需注意版本差異

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72405.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件需求分類、需求獲取(高軟46)

系列文章目錄 軟件需求分類,需求獲取 文章目錄 系列文章目錄前言一、軟件需求二、獲取需求三、真題總結 前言 本節講明軟件需求分類、需求獲取的相關知識。 一、軟件需求 二、獲取需求 三、真題 總結 就是高軟筆記,大佬請略過!

Zabbix7.0+DeepSeek大模型實現人工智能告警分析

一、方案概述 本方案基于Zabbix7.0監控系統,通過底層webhook腳本機制集成Deepseek做故障分析提供解決方案,構建智能化運維體系。 其核心架構包括: Zabbix監控平臺:負責實時監控和告警觸發 Webhook接口:實現告警信息的傳遞 Deepseek AI平臺:提供故障智能分析能力 二、…

CPU相關:實時cpu信息接口

[rootxxx ~]# cat /proc/cpuinfo #通過實時cpu信息接口查看cpu信息

Certbot實現SSL免費證書自動續簽(CentOS 7版 + Docker部署的nginx)

前置安裝,可參考Certbot實現SSL免費證書自動續簽(CentOS 7 nginx/apache) 如果是通過 Docker 運行 Nginx, certbot 無法直接檢測到本地的 Nginx 配置。解決方案是 使用 standalone 模式 或 掛載 Webroot 方式獲取 SSL 證書&…

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型語言模型的訓練后優化綜述——第2部分

3、微調(上一部分內容) 4、LLMs的對齊 大型語言模型(LLMs)中的對齊涉及引導模型輸出以符合人類預期和偏好,特別是在安全關鍵或用戶面對的應用程序中。本章討論了實現對齊的三個主要范式: 帶有反饋的人工…

熱key探測技術架構設計與實踐

參考: 得物熱點探測技術架構設計與實踐 Redis數據傾斜與JD開源hotkey源碼分析揭秘 京東熱點檢測 HotKey 學習筆記 hotkey: 京東App后臺中間件,毫秒級探測熱點數據,毫秒級推送至服務器集群內存,大幅降低熱key對數據層查詢壓力 …

Windows 環境圖形化安裝 Oracle 23ai

文章目錄 Windows 環境安裝23ai下載Oracle 23ai安裝包安裝安裝詳細圖形界面連接Oracle 23ai 安裝過程中遇到的錯誤安裝過其他版本數據庫,設置了ORACLE_HOME或 TNS_ADMIN解決方法 無法訪問Windows Installer Serviece (error 1719)解決方法 其他注意 參考&#xff1a…

RabbitMQ支持的復雜的消息交換模式

RabbitMQ支持多種復雜的消息交換模式,這些模式通過不同的交換機類型和隊列特性實現,能夠滿足多樣化的業務需求。以下是RabbitMQ支持的主要復雜消息交換模式: 1. Direct Exchange(直連交換機) 直連交換機根據消息的路由…

基于SpringBoot3+Druid數據庫連接池與外部PostgreSQL的Kubernetes Pod YAML全解析

說明 一個基于Spring Boot 3 Druid 外部PostgreSQL的Kubernetes Pod YAML詳細解析,包含最佳實踐和關鍵配置說明: YAML apiVersion: apps/v1 kind: Deployment metadata:name: springboot-applabels:app: springboot-app spec:replicas: 2selector:ma…

Android 全局工具類 AppHolder:高效管理 Application 和 Activity

引言 介紹 AppHolder 的作用:全局管理 Application 和 Activity,簡化開發。適用場景:需要全局上下文和生命周期管理的場景。 功能特性 全局上下文管理。Activity 生命周期監聽。Fragment 生命周期監聽(可選)。應用狀態…

PyTorch 深度學習實戰(14):Deep Deterministic Policy Gradient (DDPG) 算法

在上一篇文章中,我們介紹了 Proximal Policy Optimization (PPO) 算法,并使用它解決了 CartPole 問題。本文將深入探討 Deep Deterministic Policy Gradient (DDPG) 算法,這是一種用于連續動作空間的強化學習算法。我們將使用 PyTorch 實現 D…

【深度學習與大模型基礎】第5章-線性相關與生成子空間

線性相關是指一組向量中,至少有一個向量可以表示為其他向量的線性組合。具體來說,對于向量組 v1,v2,…,vn,如果存在不全為零的標量 c1,c2,…,cn使得: c1v1c2v2…cnvn0 則稱這些向量線性相關。否則,它們線性無關。 舉…

【Agent實戰】貨物上架位置推薦助手(RAG方式+結構化prompt(CoT)+API工具結合ChatGPT4o能力Agent項目實踐)

本文原創作者:姚瑞南 AI-agent 大模型運營專家,先后任職于美團、獵聘等中大廠AI訓練專家和智能運營專家崗;多年人工智能行業智能產品運營及大模型落地經驗,擁有AI外呼方向國家專利與PMP項目管理證書。(轉載需經授權) 目錄 結論 效果圖示 1.prompt 2. API工具封…

Go語言入門基礎詳解

一、語言歷史背景 Go語言由Google工程師Robert Griesemer、Rob Pike和Ken Thompson于2007年設計,2009年正式開源。設計目標: 兼具Python的開發效率與C的執行性能內置并發支持(goroutine/channel)簡潔的類型系統現代化的包管理跨…

HarmonyOS NEXT開發進階(十二):build-profile.json5 文件解析

文章目錄 一、前言二、Hvigor腳本文件三、任務與任務依賴圖四、多模塊管理4.1 靜態配置模塊 五、分模塊編譯六、配置多目標產物七、配置APP多目標構建產物八、定義 product 中包含的 target九、拓展閱讀 一、前言 編譯構建工具DevEco Hvigor(以下簡稱Hvigor&#x…

基于SSM + JSP 的圖書商城系統

基于SSM的圖書商城 網上書城、圖書銷售系統、圖書銷售平臺 |Java|SSM|HTML|JSP| 項目采用技術: ①:開發環境:IDEA、JDK1.8、Maven、Tomcat ②:技術棧:Java、…

色板在數據可視化中的創新應用

色板在數據可視化中的創新應用:基于色彩感知理論的優化實踐 引言 在數據可視化領域,色彩編碼系統的設計已成為決定信息傳遞效能的核心要素。根據《Nature》期刊2024年發布的視覺認知研究,人類大腦對色彩的識別速度比形狀快40%,色…

K8S學習之基礎二十七:k8s中daemonset控制器

k8s中DaemonSet控制器 ? DaemonSet控制器確保k8s集群中,所有節點都運行一個相同的pod,當node節點增加時,新節點也會自動創建一個pod,當node節點從集群移除,對應的pod也會自動刪除。刪除DaemonSet也會刪除創建的pod。…

PyTorch 系列教程:使用CNN實現圖像分類

圖像分類是計算機視覺領域的一項基本任務,也是深度學習技術的一個常見應用。近年來,卷積神經網絡(cnn)和PyTorch庫的結合由于其易用性和魯棒性已經成為執行圖像分類的流行選擇。 理解卷積神經網絡(cnn) 卷…

Spring Cloud Stream - 構建高可靠消息驅動與事件溯源架構

一、引言 在分布式系統中,傳統的 REST 調用模式往往導致耦合,難以滿足高并發和異步解耦的需求。消息驅動架構(EDA, Event-Driven Architecture)通過異步通信、事件溯源等模式,提高了系統的擴展性與可觀測性。 作為 S…