sys模块

sys模块

引入

1.什么是sys模块

  • sys模块是与python解释器交互的一个接口
  • 该模块提供对解释器使用或维护的一些变量的访问和获取
  • 它提供了许多函数和变量来处理 Python 运行时环境的不同部分

一、常见用法介绍

1、sys.argv

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

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

  • 示例:

    import sys
    
    print(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}")
    
  • 在终端运行是传入一个参数或多个参数

    image-20210108233740319

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 sys

print(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 sys
    
    print(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 sys

print(sys.getdefaultencoding())  # utf-8

8.sys.getfilesystemencoding( )

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

print(sys.getfilesystemencoding())  # utf-8

9.sys.getrecursionlimit( )

  • 获取最大递归层数
import sys

print(sys.encursionlimit())  # 1000

10.sys.setrecursionlimit( )

  • 设置最大递归层数
import sys

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

11.sys.stdin.readline( )

  • 标准输入
import sys 

res = 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%
'''
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾维斯Echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值