Python常用标准库学习
前言
Python常用标准库的学习,随手做下笔记
sys 模块
1. sys.exit(code)
sys.exit(code) 的功能是退出程序。
- 参数 code,退出代码,通常 0 代表正常退出,其它值代码异常退出
- 返回值,无
演示 sys.exit(code) 的例子:
1 |
|
程序打印 hello 后即退出了,不会执行下一条语句 print(‘world’)。
2. sys.argv
2.1 命令行参数
在 windows 和 linux 中,操作系统提供了命令行的控制方式,用户输入命令完成任务。例如,建立一个目录,输入如下命令:
1 |
|
这条命令创建了一个名称为 test 的目录,字符串 ‘mkdir’ 和字符串 ‘test’ 被称为命令行参数。
2.2 Python 程序的命令行参数
Python 将命令行参数保存在 sys 模块中的 argv 变量中:
- sys.argv 是一个数组
- 数组中存储的是字符串
在命令行模式下,使用 python 解释器执行程序 program.py:
1 |
|
则命令行参数 sys.argv 等于 [‘program.py’, ‘argument’],注意:
- 输入的命令行由 3 个单词构成,但是命令行参数不包括 ‘python’
- 命令行参数包括 python 程序文件名,即 ‘program.py’
sys.argv
以列表的方式获取运行 python 程序的命令行参数,其中, sys.argv[0] 通常指该 python程序本身, sys.argv[1] 代表第一个参数, sys.argv[2] 代表第二个参数,以此类推
1 |
|
3. 标准输入、标准输出、标准出错
3.1 概述
Python 程序将键盘抽象成一个可读的文件,从键盘读取用户输入,类似于从文件中读取数据;Python 程序将屏幕抽象成一个可写的文件,向屏幕输出数据,类似于向文件中写数据。
Python 程序执行时会自动打开三个文件:
- 标准输入文件(stdin),通常对应终端的键盘
- 标准输出文件(stdout),对应终端的屏幕
- 标准错误输出文件(stderr),对应终端的屏幕
程序将从标准输入文件读取用户输入,将正常输出数据输出到标准输出文件,而将错误信息输出到标准错误文件。
3.2 sys.stdin
sys.stdin 是 python 程序的标准输入
1 |
|
3.3 sys.stdout
sys.stdout 是 python 程序的标准输出
1 |
|
输出结果为
1 |
|
从输出可以看出,sys.stdout.write(text) 和 print(text) 的区别:
- print(text) 输出 text 后会自动换行
- sys.stdout.write(text) 输出 text 后不会自动换行
3.4 sys.stderr
sys.stderr 是 python 程序的标准出错,与 sys.stdout 相比:
- 两者都是将数据输出到屏幕
- 将正常的信息输出到 sys.stdout
- 将错误的信息输出到 sys.stderr
3.5 打印下载速度
Python 中的内置函数 print(text) 会自动的加入换行,而在某些场景下,不希望输出换行
程序在运行的过程中,断断续续的输出如下文本:
- Downloading 1%
- Downloading 2%
- …
- Downloading 100%
如果使用 print(text),就会输出 100 行,无法达到上图的效果。
使用 sys.stdout.write(text) 可以控制程序输出在同一行
1 |
|
4. sys.path
Python 的模块是一个普通的 Python 文件,例如 os 模块对应的文件是 os.py。os 模块是 Python 自带的模块,如果 Python 安装到 C:\Python3 目录下,在 C:\Python3\Lib 目录下能找到 os.py,即 os.py 的完整路径是 C:\Python3\Lib\os.py
sys.path 是一个列表,列表保存了多个路径名
1 |
|
Python 使用 ‘import os’ 引入 os 模块,注意:Python 使用模块名而不是模块的完整路径引入模块。
Python 查找模块 os 的过程如下:
5. sys.version
sys.version 记录了 Python 的版本
6. sys.platform
sys.version 记录了操作系统的型号。
getopt模块
1. 命令行参数
Python 提供了 getopt 模块来获取命令行参数。
getopt 语法格式如下:
1 |
|
getopt 是对 sys.argv获取的命令行参数进行二次处理。在运行程序的时候,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能,比如-u代表后面是用户,-p代表后面是密码。调用getopt.getopt()会返回两个列表,第一个列表复制给opts,第二个列表复制给args。
args: 要解析的命令行参数列表。
options: 以字符串的格式定义,options 后的冒号 : 表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。
long_options: 以列表的格式定义,long_options 后的等号 = 表示如果设置该选项,必须有附加的参数,否则就不附加参数。
该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有 - 或 – 的参数。
1 |
|
执行
1 |
|
输出结果
1 |
|
➡ 使用sys.gray[1:] 是为过滤第一个参数(第一个参数为python本身)
➡ “-u:-h” 为定义短格式选项 ( - )。这里的h 和 u 为两个选项。 “h” 后面没有 “:” 表示h这个选项没有选项值, “u”后面有”:” 就必须有选项值
➡ [“help”, “file=”] 为定义长格式选项 (–)。这里的 “=” 和短格式选项中的 “:” 一样,后面必须跟选项值
2. 示例
2.1 短选项模式
定义一个 site() 函数,然后通过命令行输入站点名称 name 和网址 url,可以用缩写 n 和 u:
1 |
|
测试代码
1 |
|
输出结果为
1 |
|
2.2 长选项模式
1 |
|
测试代码
1 |
|
输出结果
1 |
|
3. Exception getopt.GetoptError
在没有找到参数列表,或选项的需要的参数为空时会触发该异常。
异常的参数是一个字符串,表示错误的原因。属性 msg 和 opt 为相关选项的错误信息。
3.1 示例
假定创建这样一个脚本,可以通过命令行向脚本文件传递两个文件名,同时通过另外一个选项查看脚本的使用。脚本使用方法如下:
1 |
|
demo.py 脚本如下
1 |
|
测试代码
参考来源
https://www.runoob.com/python3/python3-command-line-arguments.html