国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python標準庫sys

這篇具有很好參考價值的文章主要介紹了Python標準庫sys。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python實用教程_spiritx的博客-CSDN博客

sys 模塊主要負責與 Python 解釋器進行交互,該模塊提供了一系列用于控制 Python 運行環(huán)境的函數(shù)和變量。

函數(shù)和對象清單

對象名稱

對象說明

sys.argv

命令行參數(shù)List,第一個元素是程序本身路徑?

sys.path

返回模塊的搜索路徑,初始化時使用PYTHONPATH環(huán)境變量的值?

sys.modules

返回系統(tǒng)導(dǎo)入的模塊字段,key是模塊名,value是模塊?

sys.exc_info()

獲取當前正在處理的異常類,exc_type、exc_value、exc_traceback當前處理的異常詳細信息

sys.exit(n)

退出程序,正常退出時exit(0)

sys.hexversion

獲取Python解釋程序的版本值,16進制格式如:0x020403F0

sys.version

獲取Python解釋程序的版本信息

sys.platform

返回操作系統(tǒng)平臺名稱

sys.stdout

標準輸出

sys.stdout.write()

標準輸出內(nèi)容

sys.stdout.writelines()

無換行輸出

sys.stdin

標準輸入

sys.stdin.read()

輸入一行

sys.stderr

錯誤輸出

sys.exc_clear()

用來清除當前線程所出現(xiàn)的當前的或最近的錯誤信息?

sys.exec_prefix

返回平臺獨立的python文件安裝的位置?

sys.byteorder

本地字節(jié)規(guī)則的指示器

sys.copyright

記錄python版權(quán)相關(guān)的東西?

sys.api_version

解釋器的C的API版本?

sys.version_info

返回你當前所使用的Python版本號

sys.getdefaultencoding()

返回當前你所用的默認的字符編碼格式?

sys.getfilesystemencoding()

返回將Unicode文件名轉(zhuǎn)換成系統(tǒng)文件名的編碼的名字?

sys.builtin_module_names

Python解釋器導(dǎo)入的內(nèi)建模塊列表?

sys.executable

Python解釋程序路徑?

sys.getwindowsversion()

獲取Windows的版本?

sys.stdin.readline()

從標準輸入讀一行

sys.setdefaultencoding()

用來設(shè)置當前默認的字符編碼(詳細使用參考文檔)?

sys.displayhook(value)

如果value非空,這個函數(shù)會把他輸出到sys.stdout(詳細使用參考文檔)

主要對象和函數(shù)的說明

sys.flags

返回一個具名元組,python命令行的參數(shù)狀態(tài),這些屬性是只讀的:

flags.debug

-d

flags.inspect

-i

flags.interactive

-i

flags.isolated

-I

flags.optimize

-O?或?-OO

flags.dont_write_bytecode

-B

flags.no_user_site

-s

flags.no_site

-S

flags.ignore_environment

-E

flags.verbose

-v

flags.bytes_warning

-b

flags.quiet

-q

flags.hash_randomization

-R

flags.dev_mode

-X?dev?(Python?開發(fā)模式)

flags.utf8_mode

-X?utf8

flags.safe_path

-P

flags.int_max_str_digits

-X?int_max_str_digits?(integer string conversion length limitation)

flags.warn_default_encoding

-X?warn_default_encoding

sys.argv

獲取運行 Python 程序的命令行參數(shù)。其中 :

sys.argv[0] 通常就是指該 Python 程序

sys.argv[1] 代表為 Python 程序提供的第一個參數(shù)

sys.argv[2] 代表為 Python 程序提供的第二個參數(shù)

……依此類推。

#sys.py
#!/usr/bin/env python

import sys
print sys.argv[0]
print sys.argv[1]


# python sys.py argv1
sys.py
argv1

如果是通過 Python 解釋器的命令行參數(shù) -c 來執(zhí)行的, argv[0] 會被設(shè)置成字符串 '-c' 。如果沒有腳本名被傳遞給 Python 解釋器, argv[0] 為空字符串。

sys.path

是搜索路徑列表,每個元素都是一個目錄名,在使用 import 語句導(dǎo)入模塊時,解釋器就會從這些路徑列表中查找指定的模塊。

>>>import sys
>>>sys.path
['/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev', '/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/third_party/thriftpy', '/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev']

?sys.exit(n)

執(zhí)行到主程序末尾,解釋器自動退出,但是如果需要中途退出程序,可以調(diào)用sys.exit函數(shù),帶有一個可選的整數(shù)參數(shù)返回給調(diào)用它的程序,表示你可以在主程序中捕獲對sys.exit的調(diào)用。(0是正常退出,其他為異常)

import sys

def exitfunc(value):
    print value
    sys.exit(0)

print "hello"

try:
    sys.exit(1)
except SystemExit,value:
    exitfunc(value)

print "come?”

# python exit.py
hello
1

exit()之后的代碼不會被執(zhí)行。

sys.modules

返回模塊名和載入模塊對應(yīng)關(guān)系的字典

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)>, 'posix': <module 'posix' (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' (frozen)>, ...>}

sys.platform

獲取當前執(zhí)行環(huán)境的平臺

>>>sys.platform
'darwin'

系統(tǒng)

平臺?值

AIX

'aix'

Emscripten

'emscripten'

Linux

'linux'

WASI

'wasi'

Windows

'win32'

Windows/Cygwin

'cygwin'

macOS

'darwin'

FreeBSD 'freebsd'

對于 Unix 系統(tǒng)(除 Linux 和 AIX 外),該字符串是?Python 構(gòu)建時的?uname?-s?返回的小寫操作系統(tǒng)名稱,并附加了?uname?-r?返回的系統(tǒng)版本的第一部分,如?'sunos5'?或?'freebsd8'.

在 3.8 版更改: 在 AIX 上,sys.platform 將不再包含主要版本號。 它將總是 'aix',而不是 'aix5' 或 'aix7'。

sys.stdin、sys.stdout、sys.stderr

標準輸入、標準輸出和標準錯誤的 文件對象:

  • stdin 用于所有交互式輸入(包括對 input() 的調(diào)用);
  • stdout 用于 print() 和 expression 語句的輸出,以及用于 input() 的提示符;
  • 解釋器自身的提示符和它的錯誤消息都發(fā)往 stderr。
  • 這些流都是常規(guī) 文本文件,與 open() 函數(shù)返回的對象一致。

sys.version、sys.api_version、sys.version_info

解釋器的版本信息

>>>sys.version
'3.11.4 (main, Jul  5 2023, 09:00:44) [Clang 14.0.6 ]’
>>>sys.api_version
1013
>>>sys.version_info
sys.version_info(major=3, minor=11, micro=4, releaselevel='final', serial=0)

版本號五部分的元組:?major,?minor,?micro,?releaselevel?和?serial。 除?releaselevel?外的所有值均為整數(shù);發(fā)布級別值則為?'alpha',?'beta',?'candidate'?或?'final'。

sys.settrace(tracefunc)

設(shè)置系統(tǒng)的跟蹤函數(shù),使得用戶在 Python 中就可以實現(xiàn) Python 源代碼調(diào)試器。該函數(shù)是特定于單個線程的.

跟蹤函數(shù)應(yīng)接收三個參數(shù):frame、event?和?argframe?是當前的堆棧幀。event?是一個字符串:'call'、'line'、'return'、'exception'?或?'opcode'。arg?取決于事件類型。

每次進入 trace 函數(shù)的新的局部作用范圍,都會調(diào)用 trace 函數(shù)(?event?會被設(shè)置為?'call'?),它應(yīng)該返回一個引用,指向即將用在新作用范圍上的局部跟蹤函數(shù);如果不需要跟蹤當前的作用范圍,則返回?None

局部跟蹤函數(shù)應(yīng)返回對自身的引用(或?qū)α硪粋€函數(shù)的引用,用來在其作用范圍內(nèi)進行進一步的跟蹤),或者返回?None?來停止跟蹤其作用范圍。

如果跟蹤函數(shù)出錯,則該跟蹤函數(shù)將被取消設(shè)置,類似于調(diào)用?settrace(None)。

這些事件具有以下含義:

  • 'call'

表示調(diào)用了某個函數(shù)(或進入了其他的代碼塊)。全局跟蹤函數(shù)將被調(diào)用,arg?為?None。返回值將指定局部跟蹤函數(shù)。

  • 'line'

執(zhí)行下一行代碼

  • 'return'

表示某個函數(shù)(或別的代碼塊)即將返回。局部跟蹤函數(shù)將被調(diào)用,arg?是即將返回的值,如果此次返回事件是由于拋出異常,arg?為?None。跟蹤函數(shù)的返回值將被忽略。

  • 'exception'

表示發(fā)生了某個異常。局部跟蹤函數(shù)將被調(diào)用,arg?是一個?(exception,?value,?traceback)?元組,返回值將指定新的局部跟蹤函數(shù)。

  • 'opcode'

執(zhí)行新的opcode

注意,由于異常是在鏈式調(diào)用中傳播的,所以每一級都會產(chǎn)生一個?'exception'?事件。

更細微的用法是,可以顯式地通過賦值 frame.f_trace = tracefunc 來設(shè)置跟蹤函數(shù),而不是用現(xiàn)有跟蹤函數(shù)的返回值去間接設(shè)置它。當前幀上的跟蹤函數(shù)必須激活,而 settrace() 還沒有做這件事。注意,為了使上述設(shè)置起效,必須使用 settrace() 來安裝全局跟蹤函數(shù)才能啟用運行時跟蹤機制,但是它不必與上述是同一個跟蹤函數(shù)(它可以是一個開銷很低的跟蹤函數(shù),只返回 None,即在各個幀上立即將其自身禁用)。

# program to display the functioning of
# settrace()
from sys import settrace


# local trace function which returns itself
def my_tracer(frame, event, arg=None):
    # extracts frame code
    code = frame.f_code
    # extracts calling function name
    func_name = code.co_name
    # extracts the line number
    line_no = frame.f_lineno

    print(f"trace:A {event} encountered in {func_name}() at line number {line_no} , {arg=}")
    return my_tracer


# global trace function is invoked here and
# local trace function is set for fun()
def foo(a:str):
    print('foo() run...')
    return a+"OK."


# global trace function is invoked here and
# local trace function is set for check()
def call():
    print('call() run ...')
    return foo('test')


# returns reference to local
# trace function (my_tracer)
settrace(my_tracer)

call()

‘’'
trace:A call encountered in call() at line number 28 , arg=None
trace:A line encountered in call() at line number 29 , arg=None
call() run ...
trace:A line encountered in call() at line number 30 , arg=None
trace:A call encountered in foo() at line number 21 , arg=None
trace:A line encountered in foo() at line number 22 , arg=None
foo() run...
trace:A line encountered in foo() at line number 23 , arg=None
trace:A return encountered in foo() at line number 23 , arg='testOK.'
trace:A return encountered in call() at line number 30 , arg='testOK.'
‘''

從上面的例子中可以看到,當運行到return時,可以從arg獲取到return后面的返回內(nèi)容。

如果要獲得跟蹤的函數(shù)內(nèi)部信息,需要對frame進行分析:

  • f_code?該函數(shù)對應(yīng)code object(類似字節(jié)碼)
  • f_code.co_name:運行代碼的函數(shù)名
  • f_code.co_filename:源代碼文件名
  • f_code.co_varnames:函數(shù)的局部變量名
  • f_lineno:源代碼代碼行號
  • f_locals:運行代碼的局部變量,是一個字典類型
  • f_globals:運行代碼的全局變量,是一個字典類型,這個里面很大,有很多系統(tǒng)信息也存儲在里面
  • f_builtins?該函數(shù)內(nèi)置函數(shù)
  • f_back?調(diào)用這個函數(shù)的函數(shù)的frame
  • f_lasti?last instruction類似匯編中program counter(函數(shù)執(zhí)行到哪了下一步干嘛)

可以根據(jù)event設(shè)置過濾,如下面統(tǒng)計函數(shù)的執(zhí)行時間:

import sys
import time

start_time = {}

def trace_function(frame, event, arg):
    global start_time
    if event == 'call':
        start_time[frame] = time.time()
    elif event == 'return':
        end_time = time.time()
        time_taken = end_time - start_time[frame]
        print('Function {} took {:.2f} seconds to execute'.format(frame.f_code.co_name, time_taken))
    return trace_function

def function_to_trace():
    print('I am being traced!')
    time.sleep(1)

sys.settrace(trace_function)
function_to_trace()
sys.settrace(None)

sys.exc_info()

本函數(shù)返回的元組包含三個值,它們給出當前正在處理的異常的信息。返回的信息僅限于當前線程和當前堆棧幀。如果當前堆棧幀沒有正在處理的異常,則信息將從下級被調(diào)用的堆棧幀或上級調(diào)用者等位置獲取,依此類推,直到找到正在處理異常的堆棧幀為止。此處的“處理異常”指的是“執(zhí)行 except 子句”。任何堆棧幀都只能訪問當前正在處理的異常的信息。

如果整個堆棧都沒有正在處理的異常,則返回包含三個?None?值的元組。否則返回值為?(type,?value,?traceback)。它們的含義是:type?是正在處理的異常類型(它是?BaseException?的子類);value?是異常實例(異常類型的實例);traceback?是一個?回溯對象,該對象封裝了最初發(fā)生異常時的調(diào)用堆棧。文章來源地址http://www.zghlxwxcb.cn/news/detail-699248.html

到了這里,關(guān)于Python標準庫sys的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Python小知識】sys.argv[1]

    sys是python的一個【標準庫】,是【system】的簡寫,封裝了一些與系統(tǒng)相關(guān)的信息和接口。 argv是【argument variable】的縮寫,意為“參數(shù)變量”,這個參數(shù)變量是一個List列表。 argv[0] 是“被調(diào)用腳本文件的相對路徑或者絕對路徑”,例如: 這里的有一個test.py腳本文件: 它的絕

    2023年04月08日
    瀏覽(17)
  • Python教程:sys模塊中maxsize()的方法

    在Python中,sys模塊有一個名為maxsize()的方法。這個方法返回一個變量Py_ssize_t可以容納的最大值。 Py_ssize_t是一個整數(shù),它給出了變量可以取的最大值。大小因操作系統(tǒng)的位而異。 32位的大小為(2 power 31)-1,64位的大小為(2 power 63)-1。 返回:此方法根據(jù)平臺類型返回最大大小值

    2024年02月10日
    瀏覽(18)
  • 詳解Python中sys模塊的功能與應(yīng)用

    本文分享自華為云社區(qū)《深入Python:sys模塊的功能與應(yīng)用詳解》,作者: 檸檬味擁抱。 在Python的標準庫中, sys ?模塊是一個常用而強大的工具,它提供了與Python解釋器交互的函數(shù)和變量。本文將介紹 sys 模塊的一些常用函數(shù)和方法,并通過實際的代碼實例來解析它們的用法

    2024年03月09日
    瀏覽(18)
  • python sys.stdin(詳細介紹readline()和readlines())

    在Python中, sys.stdin 是 sys 模塊的一部分,用于處理標準輸入流(stdin)。 詳細介紹 sys.stdin.readline()和 sys.stdin.readlines() sys.stdin.readline() 方法從標準輸入中讀取一行用戶輸入。 sys.stdin.readline() sys.stdin.readlines() 方法會一次性讀取所有輸入行,并返回一個包含各行數(shù)據(jù)的列表。

    2024年02月07日
    瀏覽(17)
  • 【Python基礎(chǔ)入門篇】基本函數(shù)——os與sys模塊

    os模塊和sys模塊 os模塊負責程序與操作系統(tǒng)交互,提供訪問操作系統(tǒng)的接口 sys模塊負責程序與Python解釋器交互,用于操控Python運行環(huán)境 待完善

    2024年01月25日
    瀏覽(25)
  • Python模塊和包:sys模塊、os模塊和變量函數(shù)的使用

    模塊化指將一個完整的程序分解為一個一個小的模塊,通過將模塊組合,來搭建出一個完整的程序。模塊化具有方便開發(fā)、維護和復(fù)用的優(yōu)點。在Python中,每個py文件就是一個模塊。 在一個模塊中引入外部模塊有兩種方式: import 模塊名 和 import 模塊名 as 模塊別名 。后者可以

    2024年02月08日
    瀏覽(28)
  • 2、有序鏈表的維護【問題描述】編寫一個程序,根據(jù)從標準輸入接收的指令來維護和操作排序的鏈表(C語言、java和Python分別實現(xiàn))

    【問題描述】 編寫一個程序,根據(jù)從標準輸入接收的指令來維護和操作排序的鏈表。鏈表是按順 序維護的,這意味著鏈表中的數(shù)據(jù)在每次操作后都以遞增的數(shù)字順序存儲。 請注意,在創(chuàng)建新節(jié)點時,需要使用malloc為它們分配空間;一旦不再需要任何已 分配的空間,就應(yīng)該使

    2024年02月09日
    瀏覽(22)
  • python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和區(qū)別

    Python的程序有兩中退出方式:os._exit(), sys.exit()。 本文介紹這兩種方式的區(qū)別和選擇。 os._exit()會直接將python程序終止,之后的所有代碼都不會繼續(xù)執(zhí)行。 sys.exit()會引發(fā)一個異常:SystemExit,如果這個異常沒有被捕獲,那么python解釋器將會退出。如果有捕獲此異常的代碼,那

    2023年04月08日
    瀏覽(25)
  • 【開發(fā)語言】C語言與Python的互操作詳解

    【開發(fā)語言】C語言與Python的互操作詳解

    博主未授權(quán)任何人或組織機構(gòu)轉(zhuǎn)載博主任何原創(chuàng)文章,感謝各位對原創(chuàng)的支持! 博主鏈接 本人就職于國際知名終端廠商,負責modem芯片研發(fā)。 在5G早期負責終端數(shù)據(jù)業(yè)務(wù)層、核心網(wǎng)相關(guān)的開發(fā)工作,目前牽頭6G算力網(wǎng)絡(luò)技術(shù)標準研究。 博客內(nèi)容主要圍繞: ???????5G/6G協(xié)議

    2024年02月10日
    瀏覽(104)
  • 入門Python編程:了解計算機語言、Python介紹和開發(fā)環(huán)境搭建

    計算機語言是用來控制計算機行為的一種語言,通過它可以告訴計算機該做什么。計算機語言和人類語言在本質(zhì)上沒有太大區(qū)別,只是交流的對象不同。 計算機語言發(fā)展經(jīng)歷了三個階段: 1. 機器語言 機器語言使用二進制編碼來編寫程序。 執(zhí)行效率高,但編寫起來麻煩。 2

    2024年02月09日
    瀏覽(113)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包