Python sys 模块中的函数和文件对象

17 Mar 2025 | 5 分钟阅读

sys 代表系统。该模块包含各种函数和变量,可帮助程序员操作 Python 的运行时和编译时环境设置。它直接与 Python 解释器进行交互并对其进行操作。

使用 sys 模块的功能的第一步是使用以下语句将模块导入程序:

在本教程中,我们将涵盖以下内容:

  1. 模块中的基本函数
  2. 模块的标准文件对象
    • stdin
    • stdout
    • stderr
  3. argv

sys 模块中的基本函数和变量

sys.copyright()显示安装在操作系统上的 Python 版本的版权信息
示例
import sys
print(sys.version)
输出
3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]
sys.getrecursionlimit()
sys.setrecursionlimit()
  • 返回递归深度
  • 将递归深度更新为给定值。

示例
import sys
print(sys.getrecursionlimit())
sys.setrecursionlimit(4000)
print(sys.getrecursionlimit())
输出
3000
4000
sys.getcheckinterval()
sys.setcheckinterval()
这两个函数已被替换为:
1.1. sys.setswitchinterval()
2.2. sys.getswitchinterval()
3.从 Python 3 开始
  1. 返回解释器在代码执行期间检查可执行信号处理程序的时间(以秒为单位)。(线程) 换句话说,**线程切换间隔**。
  2. 使用给定值更新时间间隔。
  3. 示例
    import sys
    print(sys.getcheckinterval())
    sys.setcheckinterval(300)
    print(sys.getcheckinterval())
    输出
    100
    300
    DeprecationWarning: sys.getcheckinterval() and sys.setcheckinterval() are deprecated. Use sys.getswitchinterval() instead.
    Print(sys.getcheckinterval())
sys.executable返回解释器可执行二进制文件的路径,该解释器运行我们编写的所有 Python 脚本。
示例
import sys
print(sys.executable)
输出
C:\ProgramData\Anaconda3\python.exe
sys.path返回解释器在我们的代码中导入模块时搜索的路径列表。
示例
import sys
print(sys.path)
输出
['C:\\ProgramData\\Anaconda3\\python38.zip', 'C:\\ProgramData\\Anaconda3\\DLLs'…]
sys.platform()返回代码运行所在的系统的平台,不含主版本号。
1. Windows: win32
2. macOS: darwin
示例
import sys
print(sys.platform)
输出
win32
sys.version()返回系统上运行的 Python 版本号,以及构建号和编译器等更多详细信息。
示例
import sys
print(sys.version)
输出
3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]
sys.api_version()返回解释器使用的 C API 版本。此函数主要用于调试带有扩展模块的 Python 代码。
示例
import sys
print(sys.api_version)
输出
1013
sys.winver()示例
import sys
print(sys.winver)
输出
3.8
sys.getwindowsversion()返回系统的 Windows 版本。
示例
在 Windows 10.0 系统上
import sys
print(sys.getwindowsversion())
输出
sys.getwindowsversion(major=10, minor=0, build=22000, platform=2, service_pack='')

现在我们已经了解了 sys 模块中的基本内置函数和属性,接下来我们将学习标准流。

首先,**什么是流?**

执行程序

  1. 程序可以从不同的来源接收数据。
  2. 我们可以将程序的数据发送到多个目的地。

数据源、程序和目的地之间的交互称为流。

Python 通过 sys 模块中的标准输入和输出流对象(称为 stdin 和 stdout)与输入、输出设备进行交互。

stdin

stdin-**标准输入**。

它是一个预定义的输入流对象,用于处理从源到程序的数据流。例如,用户通过键盘输入。当我们编写 input() 时,该函数会读取标准输入流设备(通常是键盘)中的字节。内置函数 input() 抽象了所有机制。它是 sys.stdin.readline() 的包装函数。我们甚至可以将输入源从键盘重定向到另一个设备或文件。

以下是使用 stdin 获取输入的简单示例:

1. 打开记事本或其他文本编辑器。

2. 输入代码片段并将其保存为 python 文件(.py)。

您会注意到在上面的代码片段中,sys.stdin 表现得像一个文件,并且我们使用 readlines() 来读取它。

3. 现在,打开命令提示符。

使用以下命令将目录更改为文件位置:


4. 输入输入并使用 Ctrl+z 结束。您将能够看到所有输入的文本以及它们的长度。

Functions and file objects in Python sys module

5. 我们直接从命令行获取了用户输入。

sys.stdin.readline() 和 input()

我们可以在 Python 中使用这两个函数来获取输入。它们的功能有一些显著的差异:

  1. readlines() 会读取末尾的换行符,而 input() 则不会。
  2. readline() 有一个名为 size 的参数,用于指定它能读取的字符数,而 input() 则有一个提示或字符串,我们可以在获取输入之前打印它。

stdout

stdout: 标准输出。

它是一个预定义的输出流对象,用于将数据从程序传输到不同的目的地。例如,我们使用 print() 在控制台/屏幕上显示内容。在这里,标准输出流设备是控制台。它允许我们直接与命令行进行交互并将内容打印到其中。

这是一个简单的例子

1. 打开记事本或其他文本编辑器。

2. 输入代码片段并将其保存为 python 文件(.py)。

您会注意到在上面的代码片段中,sys.stdout 表现得像一个文件,并且我们使用 write() 来写入它。

3. 现在,打开命令提示符。

使用以下命令将目录更改为文件位置:


4. 输入输入并使用 Ctrl+z 结束。您将能够看到所有输入的文本以及它们的长度。

Functions and file objects in Python sys module

5. 正如您所观察到的,函数 sys.stdout.write() 默认不会在末尾添加换行符。我们需要手动添加它。

stderr

stderr: 标准错误流。

与 stdout 流类似,stderr 也是一个输出流。stdout 和 stderr 之间的区别在于,stderr 通常用于打印或输出错误、异常和调试信息。标准错误流设备是控制台。我们也可以使用 stdout 来输出错误信息,但 stderr 是专门为此任务设计的。

这是一个简单的例子

1. 打开记事本或其他文本编辑器。

2. 输入代码片段并将其保存为 python 文件(.py)。

您会注意到在上面的代码片段中,sys.stderr 表现得像一个文件,并且我们使用 write() 来写入它。

3. 现在,打开命令提示符。

使用以下命令将目录更改为文件位置:


4. 输入输入并使用 Ctrl+z 结束。您将能够看到所有输入的文本以及它们的长度。

Functions and file objects in Python sys module

5. 与 stdout.write() 不同,此函数也写入 IDE 控制台。

Functions and file objects in Python sys module

重定向

通常,标准输入流设备是键盘,标准输出流设备是系统控制台。我们可以根据需要更改这些设备,方法是:

1. Shell 重定向。

  • < 运算符表示输入。当我们说 < file_name 时,输入将从指定的文件中获取。
  • > 运算符表示输出。当我们说,> file name 时,程序的输出将被写入指定的文件。

这里有一个例子

  1. 打开记事本或其他文本编辑器。
  2. 输入代码片段并将其保存为 python 文件(.py)。

3. 现在,打开命令提示符。

使用以下命令将目录更改为文件位置:

使用以下命令:

将 source.py 的输出重定向到 destination 文件。

Functions and file objects in Python sys module
Functions and file objects in Python sys module

2. 使用 stdout

1D.txt

Functions and file objects in Python sys module