sys模块_51CTO博客_python sys模块

sys模块

sys模块

原创

淘小欣 ©著作权

文章标签 Python开发 模块 文章分类 Python 后端开发

©著作权归作者所有:来自51CTO博客作者淘小欣的原创作品,请联系作者获取转载授权,否则将追究法律责任
sys模块

引入

1.什么是sys模块

  • sys模块是与python解释器交互的一个接口

  • 该模块提供对解释器使用或维护的一些变量的访问和获取

  • 它提供了许多函数和变量来处理 Python 运行时环境的不同部分

一、常见用法介绍

1、sys.argv

  • 实现从程序的外部向程序传递参数

  • 返回的是一个列表,第一个元素是程序文件名,后面的元素都是程序外部传入的参数

  • 示例:

    import sysprint(sys.argv)
    uu=sys.argv
    if uu=="Jack":
        print(f"i am {uu}")
    ​
    else:
        for i in range(1,len(sys.argv)):
            print(f"i am {sys.argv}")
    
  • 在终端运行是传入一个参数或多个参数

2.sys.path

  • 获取指定模块搜索路径的字符串集合, 返回的是一个列表 (表示可以使用 append或者insert)

  • 可以将写好的模块放入某个路径下, 然后将这个路径添加到 sys.path 里面, import时就可以找到

  • 示例

    import sys
    print(sys.path)
    ​
    '''
    ['F:\\python_16\\day 29', 'F:\\PyCharm\\plugins\\python\\helpers\\pycharm_display', 'F:\\Python38\\python38.zip', 'F:\\Python38\\DLLs', 'F:\\Python38\\lib', 'F:\\Python38', 'F:\\python_16\\venv', 'F:\\python_16\\venv\\lib\\site-packages', 'F:\\PyCharm\\plugins\\python\\helpers\\pycharm_matplotlib_backend']'''
    
    • 可以发现是一个列表 (代表着可以使用 “append” 功能向里面添加路径)

    • 第一个路径是当前执行文件所在的目录

    • 第二个是整个项目的路径, “PyCharm” 的优化 (在别的编辑器上没有,可以忽略)

    • 第四个是 “zip” 格式压缩包, 其实它是python解释器,里面放的是内置以及标准库模块

    • 其他的一些都是第三方库或者自定义下载的模块

  • 添加列表

    import sys
    sys.path.append("[文件路径]")
    ​
    #示例
    import sys
    sys.path.append("F:/python_16/day 29/")
    print(sys.path[-1])
    ​
    

3.sys.exit(n)

  • 退出程序, 正常退出时 sys.exit(0), 其他为异常退出

  • 一般情况下运行到主程序尾部, 解释器就正常退出了, 但如果想要中途退出, 就可以调用 sys.exit 函数

ps : exit()运用在交互式shell中,而sys.exit主要用于程序中,二者功能类似

4、sys.version

  • 获取 Python 解释程序的版本信息

import sysprint(sys.version)  #3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]

5.sys.platform

  • 返回操作系统平台名称

    import sysprint(sys.platform)  # win32
    

6.sys.maxint 与 sys.maxsize

  • 最大的 int 值

  • Python3 中删除了 sys.maxint常量, 因为不再对整数值进行限制

    import sys# print(sys.maxint)
    # AttributeError: module 'sys' has no attribute 'maxint'
    print(sys.maxsize)
    # 9223372036854775807
    

7.sys.getdefaultencoding( )

  • 获取解释器默认编码

import sysprint(sys.getdefaultencoding())  # utf-8

8.sys.getfilesystemencoding( )

  • 获取内存数据存到文件里的默认编码

import sysprint(sys.getfilesystemencoding())  # utf-8

9.sys.getrecursionlimit( )

  • 获取最大递归层数

import sysprint(sys.encursionlimit())  # 1000

10.sys.setrecursionlimit( )

  • 设置最大递归层数

import syssys.setrecursionlimit(1314)
print(sys.getrecursionlimit())  # 1314

11.sys.stdin.readline( )

  • 标准输入

import sysres = sys.stdin.readline()
print(res)  
songha  # 这是控制台输入的字符串
songha  # 这是 print 输出的字符串 "songha\n"

12.sys.stdout.write(“xxx”)

  • 标准输出 (相比较 print 能更好的控制输出)

import sys
sys.stdout.write("taoxiaoxin\n")    #taoxiaoxind
  • 模拟简单进度条动态加载

    import sys,time
    for i in range(30):
        sys.stdout.write("█")
        time.sleep(0.1)
        sys.stdout.flush()  # 刷新显示到屏幕上
    '''输出内容
    ██████████████████████████████
    '''
    

二、模拟进度条

#储备知识
'%-50s'  # "%":字符串格式化; "-":左对齐,数字和字符串默认都是右对齐; "50":代表我设置的宽度
'r'  # 表示让光标跳到行首# "print"模拟输出进度条效果,宽度是"40",传入的是"█"
print("▌%-40s▌" %'█')
print("▌%-40s▌" %'██')
print("▌%-40s▌" %'███')
print("▌%-40s▌" %'████')
print("▌%-40s▌" %'█████')
'''输出内容
▌█                                       ▌
▌██                                      ▌
▌███                                     ▌
▌████                                    ▌
▌█████                                   ▌
'''#打印百分比"%",第一个是传值,第三个是取消第二个百分号的特殊意义
print('%s%%' %(10))
print('%s%%' %(30))
print('%s%%' %(80))
print('%s%%' %(100))
'''输出内容
10%
30%
80%
100%
'''#使用参数来实现可变宽度
print("▌%%-%ds▌" % 40)  #  "▌%-40s▌"
print(("▌%%-%ds▌" % 40) % "██")
print(("▌%%-%ds▌" % 40) % "███")
print(("▌%%-%ds▌" % 40) % "████")
print(("▌%%-%ds▌" % 40) % "█████")
​
#开始实现:import time
def progress(percent, symbol='█', width=40):
    if percent > 1:     # 超过 100% 的时候让其停在 1
        percent = 1     # 可以避免进度条溢出
    show_progress = ("▌%%-%ds▌" % width) % (int(percent * width) * symbol)
    print("\r%s %.2f%%" % (show_progress, percent * 100), end='')
​
​
def plan():
    data_size = 1025  # 传输数据
    recv_size = 0  # 初始值为0
    while recv_size < data_size:
        time.sleep(0.1)  # 模拟数据的传输延迟
        recv_size += 150  # 每次收150
​
        percent = recv_size / data_size  # 接收的比例
        progress(percent, width=40)  # 进度条的宽度40
​
​
plan()
​
'''输出内容
▌████████████████████████████████████████▌ 100.00%
'''
	
  • 收藏
  • 评论
  • 举报

上一篇:os模块

下一篇:shelve 模块

提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
相关文章

举报文章

请选择举报类型

内容侵权 涉嫌营销 内容抄袭 违法信息 其他

具体原因

包含不真实信息 涉及个人隐私

补充说明

0/200

上传截图

格式支持JPEG/PNG/JPG,图片不超过1.9M

已经收到您得举报信息,我们会尽快审核