经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
第20天 内置模块一
来源:cnblogs  作者:沉沦的罚  时间:2018/10/17 9:06:06  对本文有异议

人生三问

  1. 1. 内置模块是什么
      内置模块就是python编译器里面自带的一些模块,我们没有必要去写,但是可以直接使用!
  2. 2. 为什么要使用内置模块
      在日常工作中,我们需要去写一些模块去解决一些特定的功能,但是对于一些比较常用的功能,python解释器已经帮我们写好了,你说你是想直接拿来就用呢?还是再自己去写一个模块,当然是直接用啊。
  3. 3. 内置模块怎么使用
      内置模块和我们自定义的模块是一样的,通过importfrom导入进行使用

 

介绍的模块:

  1. time
  2. datetime
    sys
    shutil
    random
    os

 

模块一: time

1. 时间戳

  1. >>> time.time() # 代表的是从1970年开始到现在经过的秒数
  2. 1539593357.4160235

2. 结构化时间

  1. >>> time.localtime() # 通过localtime方法获得当前系统的结构化时间
  2. time.struct_time(tm_year=2018, tm_mon=10, tm_mday=15, tm_hour=16, tm_min=49, tm_sec=56, tm_wday=0, tm_yday=288, tm_isdst=0)
  3. >>> a = time.localtime()
  4. >>> a.tm_year # 可以通过.后面跟上属性查看相应的值
  5. 2018

3. 格式化字符串时间

  1. >>> time.strftime('%Y-%m-%d %X') # 通过输入%多少来获得对应的值
  2. '2018-10-15 16:57:24'
  3. >>>

 格式化的标准:

  1. %a Locales abbreviated weekday name.
  2. %A Locales full weekday name.
  3. %b Locales abbreviated month name.
  4. %B Locales full month name.
  5. %c Locales appropriate date and time representation.
  6. %d Day of the month as a decimal number [01,31].
  7. %H Hour (24-hour clock) as a decimal number [00,23].
  8. %I Hour (12-hour clock) as a decimal number [01,12].
  9. %j Day of the year as a decimal number [001,366].
  10. %m Month as a decimal number [01,12].
  11. %M Minute as a decimal number [00,59].
  12. %p Locales equivalent of either AM or PM. (1)
  13. %S Second as a decimal number [00,61]. (2)
  14. %U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3)
  15. %w Weekday as a decimal number [0(Sunday),6].
  16. %W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3)
  17. %x Locales appropriate date representation.
  18. %X Locales appropriate time representation.
  19. %y Year without century as a decimal number [00,99].
  20. %Y Year with century as a decimal number.
  21. %z Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59].
  22. %Z Time zone name (no characters if no time zone exists).
  23. %% A literal '%' character.
格式化字符串的时间格式

 4. 三种时间格式之间的转换

因为计算机认识的时间格式只有时间戳的格式,但是对于我们人类而言,时间戳的格式又太难懂,因此我们把时间戳的格式转换成【结构化的时间】或者是【格式化字符串的时间】类型,转换关系如下。

5. 时间的转换

  1. #------------------------------------------------按照图1中的关系进行时间的转换
    #
    时间之间的转换操作
  2.  
  3. # 定义三个类型的时间
  4. a = time.time() # 得到时间戳
  5. b = time.localtime() # 结构化时间
  6. c = time.strftime('%Y-%m-%d %H-%M-%S') # 格式化字符串时间
  7.  
  8. # 结构化时间转为时间戳和格式化字符串时间的两种方式
  9. d = time.mktime(b)
  10. e = time.strftime('%Y-%m-%d', b)
  11. # 时间戳转换成结构化时间
  12. f = time.localtime(a)
  13. g = time.gmtime(a)
  14. # 格式化字符串时间转化为结构化时间
  15. h = time.strptime(c, '%Y-%m-%d %H-%M-%S') # c是什么样格式的后面的格式就要写成什么样格式的

 

 6. 图二的两种方式其实就是把时间转换成外国人能够接受的时间

  1. # ---------------------------按照图二的方式进行时间的转换
  2. # 如果不进行传参,ctime和asctime得到得是一样的效果,都是转换成【week month day time year】
  3.  
  4. >>> time.asctime()
  5. 'Mon Oct 15 18:23:37 2018'
  6. >>> time.ctime()
  7. 'Mon Oct 15 18:23:44 2018'
  8. >>>
  9.  
  10. # 如果进行传参
  11. >>> a = time.time() # 先得到时间戳
  12. >>> b = time.localtime() # 得到结构化时间
  13. >>> time.asctime(b) # 通过asctime把结构化时间转换成固定的外国人接受的时间
  14. 'Mon Oct 15 18:28:12 2018'
  15. >>> time.ctime(a) # 通过ctime将时间戳转换成外国人能够接受的时间
  16. 'Mon Oct 15 18:28:06 2018'
  17. >>>

 

模块二:datatime

  1. >>> print(datetime.datetime.now()) # 通过datetime的now方法获取当前时间格式
  2. 2018-10-15 18:40:17.028194
  3. >>> datetime.datetime.fromtimestamp(time.time())
  4. datetime.datetime(2018, 10, 15, 18, 40, 34, 551056)
  5. >>> print(datetime.datetime.fromtimestamp(time.time())) # 通过fromtimestamp转换成相应的时间格式
  6. 2018-10-15 18:40:57.722764
  7. >>>

datetime重要的作用,用来做时间的加减

  1. print(datetime.datetime.now())  # 展示现在的时间 格式为 【year:month:day hour:minute:second 】
  2. print(datetime.datetime.fromtimestamp(time.time())) # 将时间戳转换成datetime的形式
  3. # 当前时间加减三天
  4. print(datetime.datetime.now() + datetime.timedelta(3))
  5. print(datetime.datetime.now() + datetime.timedelta(-3))
  6. # 当前时间加减三个小时
  7. print(datetime.datetime.now() + datetime.timedelta(hours=3))
  8. print(datetime.datetime.now() + datetime.timedelta(hours=-3))
  9. # 当前时间加减三十分钟
  10. print(datetime.datetime.now() + datetime.timedelta(minutes=30))
  11. print(datetime.datetime.now() + datetime.timedelta(minutes=-30))

替换:

  1. c_time = datetime.datetime.now()
  2. print(c_time, type(c_time))
  3. print(c_time.replace(month=11, year=2020, minute=10))
  4. print(c_time)

 

模块三: sys模块

  1. '''
  2. sys模块(python解释器相关的)
  3. 1. sys.argv # 这个是传入的参数,返回的是列表的形式,第一个是当前执行文件的名称
  4. 2. sys.path   # 系统的环境变量,可以通过append方法进行更改
  5. 3. sys.modules  # 内存已经加载的模块,以字典的形式存在
  6. 4. sys.version  # 解释器的版本
  7. 5. sys.platform # 当前执行的平台
  8. 6. sys.exit() # 退出当前执行的python解释器
  9. # 了解
  10. 7. sys.api_version # api版本号
  11. 8. sys.maxsize  # 最大值得整数32位为 2 ** 32 - 1 64位为2 ** 64 -1
  12. 9. sys.maxunicode # 最大的unicode 0x10FFFF
  13. '''
  1. >>> import sys
  2. >>> sys.version
  3. '3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]'
  4. >>> sys.api_version
  5. 1013
  6. >>> sys.platform
  7. 'win32'
  8. >>> sys.path
  9. ['', 'E:\\software\\python3\\python36.zip', 'E:\\software\\python3\\DLLs', 'E:\\software\\python3\\lib', 'E:\\software\\python3', 'E:\\software\\python3\\lib\\site-packages']
  10. >>> ays.maxunicode
  11. Traceback (most recent call last):
  12. File "<stdin>", line 1, in <module>
  13. NameError: name 'ays' is not defined
  14. >>> sys.maxunicode
  15. 1114111
  16. >>> sys.maxsize
  17. 2147483647
  18. >>> sys.modules
  19. {'builtins': <module 'builtins' (built-in)>, 'sys': <module 'sys' (built-in)>, '_frozen_importlib': <module '_frozen_importlib' (frozen)>, '_imp': <module '_imp' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_thread': <module '_thread' (built-in)>, '_weakref': <module '_weakref' (built-in)>, '_frozen_importlib_external': <module '_frozen_importlib_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, 'encodings': <module 'encodings' from 'E:\\software\\python3\\lib\\encodings\\__init__.py'>, 'codecs': <module 'codecs' from 'E:\\software\\python3\\lib\\codecs.py'>, '_codecs': <module '_codecs' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from 'E:\\software\\python3\\lib\\encodings\\aliases.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from 'E:\\software\\python3\\lib\\encodings\\utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' (built-in)>, 'encodings.latin_1': <module 'encodings.latin_1' from 'E:\\software\\python3\\lib\\encodings\\latin_1.py'>, 'io': <module 'io' from 'E:\\software\\python3\\lib\\io.py'>, 'abc': <module 'abc' from 'E:\\software\\python3\\lib\\abc.py'>, '_weakrefset': <module '_weakrefset' from 'E:\\software\\python3\\lib\\_weakrefset.py'>, 'site': <module 'site' from 'E:\\software\\python3\\lib\\site.py'>, 'os': <module 'os' from 'E:\\software\\python3\\lib\\os.py'>, 'errno': <module 'errno' (built-in)>, 'stat': <module 'stat' from 'E:\\software\\python3\\lib\\stat.py'>, '_stat': <module '_stat' (built-in)>, 'ntpath': <module 'ntpath' from 'E:\\software\\python3\\lib\\ntpath.py'>, 'genericpath': <module 'genericpath' from 'E:\\software\\python3\\lib\\genericpath.py'>, 'os.path': <module 'ntpath' from 'E:\\software\\python3\\lib\\ntpath.py'>, '_collections_abc': <module '_collections_abc' from 'E:\\software\\python3\\lib\\_collections_abc.py'>, '_sitebuiltins': <module '_sitebuiltins' from 'E:\\software\\python3\\lib\\_sitebuiltins.py'>, 'sysconfig': <module 'sysconfig' from 'E:\\software\\python3\\lib\\sysconfig.py'>, 'atexit': <module 'atexit' (built-in)>}
  20. >>> sys.exit()
sys模块常见的使用方法

 argv的应用:

  1. import sys
  2. # 源文件为python解释器第二个参数
  3. src_file = sys.argv[1]
  4. # 目的文件问传入的第三个参数
  5. dst_file = sys.argv[2]
  6. with open(src_file, 'rb') as read_f, open(dst_file, 'wb') as write_f:
  7. for line in read_f:
  8. write_f.write(line)
  9. # 在终端中 执行当前文件
  10. # C:\Users\Administrator>python H:\python_study\day20\内容回顾.py H:\python_study\day20\test2.py H:\python_study\day20\test22.py
copy文件时当做参数使用

sys的应用(进度条)

  1. import sys
  2. import time
  3. def progress(percent, width=50):
  4. # 当百分比大于1的时候都按照1来显示
  5. if percent >= 1:
  6. percent = 1
  7. # '[%%-%ds]' % width ====> %-50s
  8. # 然后通过格式化得到我们想要的值
  9. show_str = ('[%%-%ds]' % width) % ('#' * int((width * percent)))
  10. # 最后打印的时候加上百分比
  11. print('{show_str} {percent}%'.format(
  12. show_str=show_str,
  13. percent=int(percent * 100)
  14. ))
  15. # 模拟下载数据数据大小为1024567
  16. data_size = 1024567
  17. recv_size = 0
  18. while recv_size < data_size:
  19. # 模拟数据延迟0.1秒
  20. time.sleep(0.1)
  21. # 每次下载1024
  22. recv_size += 1024
  23. # 得到百分比打印
  24. percent = recv_size / data_size
  25. progress(percent)
模拟下载数据显示打印条

 

 模块四:random

  1. import random
  2. random.random() # 得到一个(0-1)之间的浮点数
  3. random.uniform(1, 3) # 得到一个(1, 3)之间的一个小数
  4. random.randint(1, 3) # 得到一个[1, 3]之间的整数
  5. random.randrange(1, 3) # 得到一个[1, 3)之间的一个整数
  6. random.choice([1, '23', [4, 5]]) # 获得列表中的一个值
  7. random.choices([1, '23', [4, 5]], k=2) # 获得列表中的两个值返回一个列表
  8. random.sample([1, '23', [4, 5]], k=2) # 列表元素任意2个组合
  9.  
  10. # 打乱顺序
  11. l = [1,2,3,4,5]
  12. random.shuffle(l) # 传递的必须是一个列表
  13. print(l)

生成一个随机验证码:

  1. # 验证码包含数字和字母
  2. def get_auth_code(num):
  3. temp_list = []
  4. while num:
  5. num -= 1
  6. # 首先获得数字
  7. a = str(random.randint(0, 10))
  8. # 其次获得字符
  9. b = chr(random.randint(0, 120))
  10. # 添加到列表中
  11. temp_list.append(random.choice([a, b]))
  12. return temp_list
  13. print(' '.join(get_auth_code(4)))
随机验证码的生成

 

模块五: shutil

  1. '''
  2. shutil 高级的文件,文件夹,压缩包处理模块
  3. 文件处理:
  4. shutil.copyfileobj 传入的是两个对象,源文件,目的文件
  5. shutil.copyfile 传入的是两个路径,原路径,目的路径
  6. shutil.copymode 只复制文件的权限,目的恩瑾可定是要存在
  7. shutil.copystat 只复制文件的状态信息,修改时间,查看时间,更改时间,flag是
  8. shutil.copy 拷贝文件和权限
  9. shutil.copy2 拷贝文件和状态信息
  10. shutil.move() 更改文件名称
  11. 文件夹处理
  12. shutil.copytree 拷贝目录
  13. shutil.ignore_patterns 根据这个模块去设置是否不拷贝某个类型的文件
  14. shutil.rmtree 删除目录
  15. 压缩包处理
  16. shutil.make_archive() 压缩后的目录名称,格式,源目录
  17. shutile.unpack_archive() 压缩后的目录名称, 格式,解压后的目录
  18. tarfile.open().add()
  19. zipfile.ZipFile().write()
  20. '''

文件的操作:

方法1: copyfileobj:

  1. # 方法copyfileobj
  2. # 我们要首先得到两个打开的文件对象
  3. # src就是源文件对象
  4. # dst目标文件对象
  5. src = open('sys模块.py', 'rb')
  6. dst = open('sys模块2.py', 'wb')
  7. shutil.copyfileobj(src, dst)
  8. src.close()
  9. dst.close()

方法2: copyfile 

  1. # 和方法1类似,只不过它传递的是路径,而方法1传递的是对象
    #
    拷贝一个文件,而不是一个对象,目标文件可以不存在
  2. shutil.copyfile('sys模块.py', 'sys模块3.py')

方法3:copymode

  1. # 拷贝源文件的权限,在linux下面就是xrw之类的
  2. # 但是它的内容,用户,组都是不变的
  3. shutil.copymode('sys模块.py', 'sys模块2.py') # 目标文件必须要存在

方法4: copystat

  1. # 拷贝源文件的状态信息
  2. # 包括权限,查看时间,修改时间,flags等
  3. shutil.copystat('sys模块.py', 'sys模块2.py')

方法5: copy2和copy

  1. # 拷贝的是文件的内容和权限
  2. shutil.copy('sys模块.py', 'sys模块4.py')
  3. # 拷贝的是文件的内容和状态
  4. shutil.copy2('sys模块.py', 'sys模块5.py')

文件夹操作:

方法1:copytree

  1. # 拷贝一个目录,目标目录不能存在,而且还要对其父目录可以有写权限
  2. # symlinks 代表的是软连接,就相当于是一个快捷方式
  3. # shutil.ignore_patterns拷贝的时候把符合模式的给删除掉就是了
  4. shutil.ignore_patterns()
  5. shutil.copytree(r'..\day20', 'forlder3',
  6. ignore=shutil.ignore_patterns('*pyc','tmp*'),
  7. symlinks=True
  8. )

方法2:rmtree

  1. # 递归的删除一个文件夹
  2. shutil.rmtree('forlder2')

方法3:move

  1. # 就像是linux下面的重命名mv命令
  2. # 参数一为源文件名,参数二为目标文件名
  3. shutil.move('forlder3', 'forlder2')

压缩文件夹

方法1: make_archive

  1. # 参数一:压缩之后的名字
  2. # 参数二: 以什么样的格式压缩,可以是zip,tar,bztar, gztar
  3. # 参数三: 要压缩的目录
  4. '''
  5. owner: 用户,默认当前用户
  6. group: 组,默认当前组
  7. logger: 用于记录日志,通常是logging.Logger对象
  8. '''
  9. shutil.make_archive('forlder2', 'zip', root_dir='../day20')

解压文件

方法1:unpack_archive

  1. # 先打包一份zip的文件
  2. shutil.make_archive('day19', 'zip', root_dir='..\day19')
  3. # 解压文件,要加上后缀名称
  4. # 参数一: 解压的文件
  5. # format: 解压的格式
  6. # extract_dir: 解压的目录
  7. shutil.unpack_archive('day19.zip', format='zip',extract_dir='hello')

方法2:tarfile模块

  1. import tarfile
  2. # 压缩
  3. t = tarfile.open('day.tar', mode='w')
  4. t.add('sys模块.py')
  5. t.add('sys模块2.py')
  6. t.add('sys模块3.py')
  7. t.close()
  8. # 解压
  9. t = tarfile.open('day.tar', mode='r')
  10. t.extractall('./day')
  11. t.close()

方法3:  zipfile模块

  1. import zipfile
  2. # 压缩
  3. # 首先得到一个zipfile的对象,然后通过write压缩进对象中
  4. z = zipfile.ZipFile('day.zip', mode='w')
  5. z.write('sys模块.py')
  6. z.write('sys模块2.py')
  7. z.write('sys模块3.py')
  8. z.close()
  9. # 解压
  10. # 也是先得到对象,然后通过extractall获得对象
  11. z = zipfile.ZipFile('day.zip', mode='r')
  12. z.extractall(path='./day')
  13. z.close()

 

模块六:os模块

  1. '''
  2. os模块: 指的是和操作系统相关的模块
  3. 1. 目录操作
  4. os.mkdir 创建一个单级目录
  5. os.makedirs 创建多级目录,递归创建
  6. os.rmdir 删除一个目录
  7. os.removedirs 递归删除目录,如果目录为空
  8. chdir 改变当前目录
  9. pardir 当前执行目录的父目录
  10. curdir 当前执行文件的目录
  11. getcwd() 获得当前解释器执行文件目录
  12. listdir() 以列表的形式返回当前目录下面有什么内容
  13. 2. 文件操作
  14. os.remove() 删除文件
  15. os.rename() 修改文件名称
  16. os.stat 查看当前文件的状态信息
  17. os.path.getsize() 查看当前文件的大小
  18. os.path.getatime() 查看当前文件的创建时间
  19. os.path.getmtime() 查看当前文件的修改时间
  20. 3. 变量信息
  21. os.stat # 文件的状态信息
  22. os.name # win是‘nt’, linux平台是'posix'
  23. os.sep # 操作系统特定的路径分隔符
  24. os.linesep # 换行符win为'\t\n', linux为'\t'
  25. os.pathsep # 分割文件路径的字符串win为;, linux为:
  26. os.environ # 系统环境变量
  27. os.system() # 运行shell命令,直接显示
  28. 4. 路径的判断
  29. os.path.exists() # 判断路径是否存在
  30. os.path.isfile() # 判断是否是个文件
  31. os.path.isdir() # 判断是否是个目录
  32. os.path.join() # 拼接路径
  33. 5. 路径操作
  34. os.path.split() # 以列表的形式返回文件名和目录
  35. os.path.basename # 获得得就是split的文件名
  36. os.path.dirname # 获得得就是split的目录
  37. 5. 规范化路径
  38. os.path.normcase() # 将大写变小写,并将所有斜杠转成反斜杠(返回的是原字符串)
  39. os.path.normpath() # 会把反斜杠转换成斜杠,然后可以识别相对路径
  40. os.path.abspath() # 返回path规范化的绝对路径
  41. '''
  1. # 一般路径的处理使用这种方式
  2. import os, sys
  3. TOP_DIR = os.path.normpath(os.path.join(
  4. os.path.abspath(__file__),
  5. os.pardir,
  6. ))
  7. print(TOP_DIR)
  8. # 不建议使用下面这种方式
  9. TOP_DIR = os.path.dirname(os.path.dirname(__file__))
  1. LinuxMac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
  2. >>> os.path.normcase('c:/windows\\system32\\')
  3. 'c:\\windows\\system32\\'
  4. 规范化路径,如..和/
  5. >>> os.path.normpath('c://windows\\System32\\../Temp/')
  6. 'c:\\windows\\Temp'
  7.  
  8. >>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
  9. >>> print(os.path.normpath(a))
  10. /Users/jieli/test1

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号