<input id="m74ru"><table id="m74ru"></table></input>
    <track id="m74ru"></track>
    <u id="m74ru"></u>

  • <u id="m74ru"><bdo id="m74ru"><pre id="m74ru"></pre></bdo></u>
    <i id="m74ru"><bdo id="m74ru"></bdo></i>

  • <input id="m74ru"><table id="m74ru"><p id="m74ru"></p></table></input>

      教育行业A股IPO第一股(股票代码 003032)

      全国咨询/投诉热线:400-618-4000

      Python的标准模块介绍:sys、os、random和time

      更新时间:2021年04月22日18时08分 来源:传智教育 浏览次数:

      传智教育-一样的教育,不一样的品质

      Python内置了许多标准模块,例如sys、os、random和time模块等,下面为大家介绍几个常用的标准模块。

      1.sys模块

      sys模块中提供了一系列与Python解释器交互的函数和变量,用于操控Python的运行时环境。sys模块中常用变量与函数如表1所示。

      表1 sys模块的常用变量与函数

      变量/函数 说明
      sys.argv 获取命令行参数列表,该列表中的第一个元素是程序自身所在路径
      sys.version 获取Python解释器的版本信息
      sys.path 获取模块的搜索路径,该变量的初值为环境变量PYTHONPATH的值
      sys.platform 返回操作系统平台的名称
      sys.exit() 退出当前程序。可为该函数传递参数,以设置返回值或退出信息,正常退出返回值为0       
      下面通过一些示例来演示sys模块中部分变量和函数的用法。

      (1)argv变量

      通过import语句导入sys模块,然后访问argv变量获取命令行参数列表,具体代码如下:

      import sys
      print(sys.argv)

      运行代码,结果如下所示。

      程序退出

      2.os模块

      os模块中提供了访问操作系统服务的功能,该模块中常用函数如表8-2所示。

      表2 os模块的常用函数

      函数 说明
      os.getcwd() 获取当前工作路径,即当前Python脚本所在的路径
      os.chdir() 改变当前脚本的工作路径
      os.remove() 删除指定文件
      os._exit() 终止Python程序
      os.path.abspath(path) 返回path规范化的绝对路径
      os.path.split(path) 将path分隔为形如(目录,文件名)的二元组并返回                                      
      下面通过一些示例来演示os模块中部分函数的用法。

      (1)getcwd()函数

      通过os模块中的getcwd()函数获取当前的工作路径,示例代码如下。

      import os
      print(os.getcwd()) # 获取当前的工作路径

      运行代码,结果如下所示。

      D:\Python项目\模块使用

      (2)exit()函数

      os模块中也有终止程序的函数——_exit(),该函数与sys模块中的exit()函数略有不同。执行os模块中的exit()函数后,程序会立即结束,之后的代码也不会再执行;而执行sys模块中的exit()函数会引发一个SystemExit异常,若没有捕获该异常退出程序,后面的代码不再执行;若捕获到该异常,则后续的代码仍然会执行。关于os和sys模块的exit()函数的用法比较如下。

      使用os模块中的_exit()函数终止程序,示例代码如下:

      import os
      print("执行_exit()之前")
      try:
          os._exit(0)
          print("执行_exit()之后")
      except:
          print("程序结束")

      运行代码,结果如下所示。

      执行_exit()之前

      由以上结果可知,程序在执行完“os._exit(0)”代码后立即结束,不再执行后续的代码。

      使用sys模块中的exit()函数终止程序,示例代码如下:

      import sys
      print("执行_exit()之前")
      try:
          sys.exit(0)
          print("执行_exit()之后")
      except:
          print("程序结束")

      运行代码,结果如下所示。

      执行_exit()之前
      程序结束

      由以上结果可知,程序执行完“sys.exit(0)”代码后没有立即结束。由于try子句中捕获了SystemExit异常,因此try子句后续的代码不再执行,而是继续执行异常处理except子句。

      (3)chdir ()函数

      os模块中还提供了修改当前工作路径的chdir()函数,示例代码如下:

      import os
      path = r"D:\Python项目\井字棋V1.0"
      # 查看当前工作目录
      current_path = os.getcwd()
      print(f"修改前工作目录为{current_path}")
      # 修改当前工作目录
      os.chdir(path)
      # 查看修改后的工作目录
      current_path = os.getcwd()
      print(f"修改后工作目录为{current_path}")

      上述代码首先使用getcwd()函数获取当前的工作路径,然后通过chdir()函数修改了当前的工作路径。

      运行代码,结果如下所示。

      修改前工作目录为D:\Python项目\模块使用
      修改后工作目录为D:\Python项目\井字棋V1.0

      3.random模块

      random模块用于生成随机数,它提供了很多函数。接下来,针对常见的随机数函数进行讲解,具体如下。

      (1)random.random()

      返回0与1之间的随机浮点数N,范围为0 <= N < 1.0。

      接下来,通过一个案例来演示random()的使用,具体代码如下所示:

      import random
      # 生成第1个随机数
      print("random():", random.random())
      # 生成第2个随机数
      print("random():", random.random())

      运行代码,结果如图1所示。

      Python的标准模块:sys、os、random和time

      图2运行结果

      (3)random.randint(a,b)

      返回一个随机的整数N,N的取值范围为a <= N <= b。需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值,示例代码如下:

      import random
      # 生成的随机数为N,N的取值范围为12 <= N <= 20
      print(random.randint(12, 20))
      # 生成的随机数为N,N的结果永远是20
      print(random.randint(20, 20))
      # print(random.randint(20, 10))  # 该语句是错误的,下限(a)必须小于上限(b)。

      运行代码,结果如图3所示。

      Python的标准模块:sys、os、random和time

      图3 运行结果

      (4)random.randrange([start], stop[, step])

      返回指定递增基数集合中的一个随机数,基数默认值为1。其中,start参数用于指定范围内的开始值,其包含在范围内;end参数用于指定范围内的结束值,其不包含在范围内;step表示递增基数。

      上述这些参数必须为整数。例如,random.randrange (10, 100, 2)相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。

      (5)random.choice(sequence)

      从sequence中返回一个随机的元素。其中,sequence参数可以是列表、元组或字符串。示例代码如下:

      random.choice("学习Python")
      random.choice(["JGood","is", "a","handsome", "boy"])
      random.choice(("Tuple","List", "Dict"))

      需要注意的是,若sequence为空,则会引发IndexError异常。

      (6)random.shuffle (x[,random])

      用于将列表中的元素打乱顺序,俗称为洗牌。示例代码如下:

      demo_list = ["Python", "is", "powerful", "simple", "and so on..."] 
      random.shuffle(demo_list) 
      print(demo_list) 
      # ---- 结果(不同机器上的结果可能不一样。) 
      # ['powerful', 'simple', 'is', 'Python', 'and so on...']

      (7)random.sample(sequence,k)

      从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列。示例代码如下:

      list_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
      slice = random.sample(list_num, 5) # 从list_num中随机获取5个元素,作为一个片断返回 
      print(slice) 
      print(list_num) # 原有序列并没有改变。

      4.time模块

      time模块中提供了一系列处理时间的函数,常用函数的说明如表3所示。

      表3 time模块的常用函数

      函数 说明
      time.time() 获取当前时间,结果为实数,单位为秒
      time.sleep(secs) 进入休眠态,时长由参数secs指定,单位为秒
      time.strptime(string[,format]) 将一个时间格式(如:2019-02-25)的字符串解析为时间元组
      time.localtime([secs]) 以struct_time类型输出本地时间
      time.asctime([tuple]) 获取时间字符串,或将时间元组转换为字符串
      time.mktime(tuple) 将时间元组转换为秒数
      strftime(format[, tuple]) 返回字符串表示的当地时间,格式由format决定                                   
      下面通过一些示例来演示time模块中部分函数的用法。

      (1)time()函数

      通过time()函数获取当前的时间,利用此特性计算程序的执行时间,示例代码如下。

      import time
      before = time.time()
      # 计算1000的10000次方
      result = pow(1000, 10000)
      after = time.time()
      interval = after - before
      print(f"运行时间为{interval}秒")

      上述代码首先导入了time模块,使用time()函数获取了当前的时间,然后使用pow()函数计算1000的10000次方,在计算该结果时会产生一定的计算时间,计算结束后再次使用time()函数获取当前的时间,最后计算两个时间的差值,以得到程序执行的时间。

      运行代码,结果如下所示。

      运行时间为0.0009999275207519531秒

      (2)sleep()函数

      如果在开发过程中需要对某个功能或某段代码设置执行时间间隔,那么可以通过sleep()函数实现。sleep()函数会让程序进入休眠,并可自由设定休眠时间。

      接下来,通过一个示例来演示sleep()函数的用法,具体代码如下。

      import random, time
      name_li1 = ["李飞", "张羽", "赵韦", "王忠", "杜超"]
      name_li2 = []
      for i in range(len(name_li1)):    # 设置循环次数
          people = random.choice(name_li1) # 随机选择一个元素
          name_li1.remove(people)       # 为避免出现重复元素,移除已选择元素
          name_li2.append(people)       # 添加到name_li2列表中
          time.sleep(2)             # 每隔2s执行一次
          print(f"此时的成员有{name_li2}")

      上述代码首先导入了random模块与time模块,然后定义了两个列表name_li1与name_li2, 遍历列表name_li1,调用choice()函数随机选择一个元素,并将随机获取的元素每隔2秒添加到列表name_li2中,直至全部添加。

      运行代码,结果如下所示。

      此时的成员有['张羽']
      此时的成员有['张羽', '赵韦']
      此时的成员有['张羽', '赵韦', '杜超']
      此时的成员有['张羽', '赵韦', '杜超', '王忠']
      此时的成员有['张羽', '赵韦', '杜超', '王忠', '李飞']

      (3)strptime()函数与mktime()函数

      如果在开发程序的过程中需要自定义时间戳,那么time模块的strptime()函数与mktime()函数是最好的选择,使用它们可以快速生成时间戳,具体代码如下。

      import time
      str_dt = "2019-02-25 17:43:54"
      # 转换成时间数组
      time_struct = time.strptime(str_dt, "%Y-%m-%d %H:%M:%S")
      # 转换成时间戳
      timestamp = time.mktime(time_struct)
      print(timestamp)

      运行代码,结果如下所示。

      1551087834.0

      (4)strftime()函数

      strftime()函数来格式化日期,其定义格式如下:

      time.strftime(format[, t])

      接下来,通过一个案例来演示strftime()函数的使用,具体代码如下所示:

      import time
      # 格式化成2016-03-20 11:45:39形式
      print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
      # 格式化成Sat Mar 28 22:24:24 2016形式
      print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
      # 将格式字符串转换为时间戳
      time_word = "Sat Mar 28 22:24:24 2016"
      print(time.mktime(time.strptime(time_word, "%a %b %d %H:%M:%S %Y")))

      运行代码,结果如图4所示。

      Python的标准模块:sys、os、random和time

      5.calendar模块

      calendar模块有很广泛的方法用来处理年历和月历,如打印某月的月历,具体代码如下所示:

      import calendar
      calendar_january = calendar.month(2016, 1)
      print("以下输出2016年3月份的日历:")
      print(calendar_january)

      运行代码,结果如图5所示。

      Python的标准模块:sys、os、random和time

      图5运行结果

      除此之外,calendar模块还提供了很多内置函数,具体如表4所示。

      表4 calendar模块的常见函数

      序号 函数和说明
      1 calendar.calendar(year,w=2,l=1,c=6) 返回一个多行字符串格式的year年年历,三个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* w+18+2* c。l是每星期行数
      2 calendar.firstweekday( ) 返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一
      3 calendar.isleap(year) 是闰年返回True,否则为False
      4 calendar.leapdays(y1,y2) 返回在y1,y2两年之间的闰年总数
      5 calendar.month(year,month,w=2,l=1) 返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数
      6 calendar.monthcalendar(year,month) 返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始
      7 calendar.monthrange(year,month) 返回两个整数。第1个是该月的星期几的日期码,第2个是该月的日期码。日从0(星期一)~6(星期日),月份为1(1月)~12(12月)
      8 calendar.prcal(year,w=2,l=1,c=6) 相当于 print(calendar.calendar(year,w,l,c))
      9 calendar.prmonth(year,month,w=2,l=1) 相当于 print(calendar.calendar(year, w, l, c))
      10 calendar.setfirstweekday(weekday) 设置每周的起始日期码。0(星期一)~6(星期日)
      11 calendar.timegm(tupletime) 和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)
      12 calendar.weekday(year,month,day) 返回给定日期的日期码。0(星期一)~6(星期日)。月份为1(1月)~12(12月)






      猜你喜欢:

      什么是Python模块?Python模块有几类?

      python的random模块介绍[传智播客]

      Python中常用的数据分析工具(模块)有哪些?

      Python正则表达式re模块常用函数有哪些?

      传智教育python+大数据开发课程

      美女视频免费是黄的网站,免费观看的成年网站,丝袜国偷自产中文字幕,亚洲日本乱码中文在线电影 网站地图