四时宝库

程序员的知识宝库

python散装笔记——177 sys 模块

sys 模块提供了访问程序运行时环境的函数和值,例如命令行参数 sys.argv 或用于从程序流程的任何位置终止当前进程的函数 sys.exit()。尽管它被清晰地划分为一个模块,但实际上它是内置的,因此在正常情况下,它始终可用。

1、 命令行参数

 if len(sys.argv) != 4:  # 脚本名称也需要被计入。
     raise RuntimeError("预期有 3 个命令行参数")
 
 f = open(sys.argv[1], 'rb')  # 使用第一个命令行参数。
 start_line = int(sys.argv[2])  # 所有参数都以字符串形式传递,因此如果需要其他类型,则需要显式转换。
 end_line = int(sys.argv[3])  # 同上。

注意,在更大、更完善的程序中,您会使用像 click 这样的模块来处理命令行参数,而不是自己编写代码。

2、 脚本名称

 # 执行的脚本名称位于 argv 列表的开头。
 print('用法:', sys.argv[0], '<文件名> <开始> <结束>')
 
 # 您可以使用它来生成执行程序的路径前缀(而不是当前模块),
 # 以便访问相对路径的文件,这对于游戏中的资源文件来说很有用。
 program_file = sys.argv[0]
 
 import pathlib
 program_path = pathlib.Path(program_file).resolve().parent

3、标准错误流

 # 如果可能的话,错误消息不应输出到标准输出。
 print('错误:我们没有奶酪了。', file=sys.stderr)
 
 try:
     f = open('不存在的文件.xyz', 'rb')
 except OSError as e:
     print(e, file=sys.stderr)

4、提前终止进程并返回退出代码

 def main():
     if len(sys.argv) != 4 or '--help' in sys.argv[1:]:
         print('用法:my_program <arg1> <arg2> <arg3>', file=sys.stderr)
         
         sys.exit(1)  # 使用退出代码来表示程序未成功运行。
     
     process_data()

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接