📜  Python系统模块

📅  最后修改于: 2022-05-13 01:55:04.579000             🧑  作者: Mango

Python系统模块

Python中的sys 模块提供了各种函数和变量,用于操作Python运行时环境的不同部分。它允许在解释器上进行操作,因为它提供对与解释器强烈交互的变量和函数的访问。让我们考虑下面的例子。

例子:

Python3
import sys
 
 
print(sys.version)


Python3
import sys
 
 
for line in sys.stdin:
    if 'q' == line.rstrip():
        break
    print(f'Input : {line}')
 
print("Exit")


Python3
import sys
 
 
sys.stdout.write('Geeks')


Python3
import sys
 
 
def print_to_stderr(*a):
 
    # Here a is the array holding the objects
    # passed as the argument of the function
    print(*a, file = sys.stderr)
 
print_to_stderr("Hello World")


Python3
# Python program to demonstrate
# command line arguments
 
import sys
 
# total arguments
n = len(sys.argv)
print("Total arguments passed:", n)
 
# Arguments passed
print("\nName of Python script:", sys.argv[0])
 
print("\nArguments passed:", end = " ")
for i in range(1, n):
    print(sys.argv[i], end = " ")
     
# Addition of numbers
Sum = 0
 
for i in range(1, n):
    Sum += int(sys.argv[i])
     
print("\n\nResult:", Sum)


Python3
# Python program to demonstrate
# sys.exit()
 
 
import sys
 
 
age = 17
 
 
if age < 18:
     
    # exits the program
    sys.exit("Age less than 18")    
else:
    print("Age is not less than 18")


Python3
import sys
 
 
print(sys.path)


Python3
import sys
 
# Removing the values
sys.path = []
 
# importing pandas after removing
# values
import pandas


Python3
import sys
 
 
print(sys.modules)


Python3
import sys
 
a = 'Geeks'
 
print(sys.getrefcount(a))



输出:

3.6.9 (default, Oct  8 2020, 12:12:24) 
[GCC 8.4.0]

在上面的示例中,使用sys.version返回一个字符串,其中包含Python解释器的版本和一些附加信息。这显示了 sys 模块如何与解释器交互。让我们深入了解本文以获取有关 sys 模块的更多信息。

使用 sys 输入和输出

sys 模块提供变量以更好地控制输入或输出。我们甚至可以将输入和输出重定向到其他设备。这可以使用三个变量来完成——

  • 标准输入
  • 标准输出
  • 标准错误

标准输入: 它可用于直接从命令行获取输入。它用于标准输入。它在内部调用 input() 方法。它还会在每个句子后自动添加 '\n'。

例子:

蟒蛇3

import sys
 
 
for line in sys.stdin:
    if 'q' == line.rstrip():
        break
    print(f'Input : {line}')
 
print("Exit")

输出:

标准输出: 类似于Python中解释器的标准输出流的内置文件对象。 stdout 用于将输出直接显示到屏幕控制台。输出可以是任何形式,可以是打印语句,表达式语句,甚至是直接输入的提示。默认情况下,流处于文本模式。事实上,无论在代码中调用打印函数的任何地方,它都会首先写入 sys.stdout,然后最后写入屏幕。

例子:

蟒蛇3

import sys
 
 
sys.stdout.write('Geeks')


输出
Geeks

标准错误: 每当Python中发生异常时,它都会写入 sys.stderr。

例子:

蟒蛇3

import sys
 
 
def print_to_stderr(*a):
 
    # Here a is the array holding the objects
    # passed as the argument of the function
    print(*a, file = sys.stderr)
 
print_to_stderr("Hello World")

输出:

python-stderr

命令行参数

命令行参数是在程序调用期间与调用语句一起传递的参数。为了使用 sys 模块实现这一点,sys 模块提供了一个名为sys.argv的变量它的主要目的是:

  • 它是一个命令行参数列表。
  • len(sys.argv) 提供命令行参数的数量。
  • sys.argv[0] 是当前Python脚本的名称。

示例:考虑一个用于添加数字的程序,并且数字与调用语句一起传递。

蟒蛇3

# Python program to demonstrate
# command line arguments
 
import sys
 
# total arguments
n = len(sys.argv)
print("Total arguments passed:", n)
 
# Arguments passed
print("\nName of Python script:", sys.argv[0])
 
print("\nArguments passed:", end = " ")
for i in range(1, n):
    print(sys.argv[i], end = " ")
     
# Addition of numbers
Sum = 0
 
for i in range(1, n):
    Sum += int(sys.argv[i])
     
print("\n\nResult:", Sum)

输出:

python-命令行参数

退出程序

sys.exit([arg])可用于退出程序。可选参数 arg 可以是一个整数,给出出口或其他类型的对象。如果是整数,零被认为是“成功终止”。

注意:字符串也可以传递给 sys.exit() 方法。

例子:

蟒蛇3

# Python program to demonstrate
# sys.exit()
 
 
import sys
 
 
age = 17
 
 
if age < 18:
     
    # exits the program
    sys.exit("Age less than 18")    
else:
    print("Age is not less than 18")

输出:

An exception has occurred, use %tb to see the full traceback.

SystemExit: Age less than 18

使用模块

系统路径 是 sys 模块中的一个内置变量,它返回解释器将搜索所需模块的目录列表。

在Python文件中导入模块时,解释器首先在其内置模块中搜索指定的模块。如果没有找到,它会查看由sys.path定义的目录列表。

注意: sys.path 是一个普通的列表,可以操作。

示例 1:列出所有路径

蟒蛇3

import sys
 
 
print(sys.path)

输出:

示例 2:截断 sys.path 的值

蟒蛇3

import sys
 
# Removing the values
sys.path = []
 
# importing pandas after removing
# values
import pandas

输出:

ModuleNotFoundError: No module named 'pandas'

sys.modules返回当前 shell 已导入的Python模块的名称。

例子:

蟒蛇3

import sys
 
 
print(sys.modules)

输出:

引用计数

sys.getrefcount()方法用于获取任何给定对象的引用计数。 Python使用此值,因为当此值变为 0 时,将删除该特定值的内存。

例子:

蟒蛇3

import sys
 
a = 'Geeks'
 
print(sys.getrefcount(a))


输出
4

Python sys 中的更多功能

FunctionDescription
sys.setrecursionlimit()sys.setrecursionlimit() method is used to set the maximum depth of the Python interpreter stack to the required limit.
sys.getrecursionlimit() methodsys.getrecursionlimit() method is used to find the current recursion limit of the interpreter or to find the maximum depth of the Python interpreter stack.
sys.settrace()It is used for implementing debuggers, profilers and coverage tools. This is thread-specific and must register the trace using threading.settrace(). On a higher level, sys.settrace() registers the traceback to the Python interpreter
sys.setswitchinterval() methodsys.setswitchinterval() method is used to set the interpreter’s thread switch interval (in seconds).
sys.maxsize()It fetches the largest value a variable of data type Py_ssize_t can store.
sys.maxintmaxint/INT_MAX denotes the highest value that can be represented by an integer.
sys.getdefaultencoding() methodsys.getdefaultencoding() method is used to get the current default string encoding used by the Unicode implementation.