Python的random模块、string模块、time模块、os模块

模块简介

python中的模块分为三种:
1、标准模块:python中自带的模块
2、第三方模块:需要自己安装的模块,比如pymysql,安装模块使用pip命令(下面介绍)
3、自己写的python:一个python就是一个模块,比如我们之前写的所有的python,都可以在其他文件中导入
4、引用模块时需要导入,使用import命令

模块操作--pip命令

pip命令简介
1、pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 2、目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。 3、Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。 4、pip 官网:https://pypi.org/ 5、用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本,如果是 Python3 安装pip则执行以下命令:sudo python3 get-pip.py,或者离线安装(下方有讲到)

检查pip版本&离线安装pip

判断是否已安装pip

pip
--version
如果已经安装,则显示pip的版本和路径,如下图 
>> pip 20.2.4 from d:softwarepython3.8.5libsite-packagespip (python 3.8)
如果未安装,即报错:如下图,说明pip可能未安装,或者安装有错误
Traceback (most recent call last):
  File "d:softwarepython3.8.5lib
unpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "d:softwarepython3.8.5lib
unpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:softwarepython3.8.5Scriptspip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'

解决办法:(离线安装)

1、通过官网https://pypi.org/搜索pip

2、找到想要下载的版本,如pip 21.1.2,https://pypi.org/project/pip/#files

3、点击下载pip-21.1.2-py3-none-any.whl (1.5 MB)

4、下载后将pip-21.1.2-py3-none-any.whl文件加上.zip后缀

5、解压该文件,会解压出来pip和pip-21.1.2.dist-info

6、进入到D:softwarepython3.8.5Libsite-packages目录下,将该目录中原有的pip和pip-21.1.2.dist-info这两个文件夹删除(如果没有则不需要删)

7、再将这两个文件复制到D:softwarepython3.8.5Libsite-packages路径下,即可解决以上问题

 安装包

pip官网:
https://pypi.org/
可通过查询搜索想要安装的模块及模块版本,如搜索pymysql



 安装命令

# pip install django # 默认安装最新版本
# pip install django==3.2.4 # 安装指定版本

 卸载包

pip uninstall django

 升级包

pip install --upgrade lxml

 常用命令

pip --help # 获取帮助
pip list # 列出已经安装的包 pip show -f xlrd # 查看指定包的详细信息 pip list -o # 查看可升级的包 Package Version Latest Type ---------- --------- --------- ----- certifi 2020.11.8 2021.5.30 wheel chardet 3.0.4 4.0.0 wheel Faker 4.17.1 8.8.1 wheel idna 2.10 3.2 wheel lxml 4.6.1 4.6.3 wheel PyMySQL 0.10.1 1.0.2 wheel requests 2.24.0 2.25.1 wheel setuptools 47.1.0 57.0.0 wheel six 1.15.0 1.16.0 wheel soupsieve 2.0.1 2.2.1 wheel urllib3 1.25.10 1.26.5 wheel xlrd 1.2.0 2.0.1 wheel XlsxWriter 1.3.7 1.4.3 wheel

 pip升级

Linux 或 macOS平台升级:

pip install --upgrade pip    # python2.x
pip3 install --upgrade pip   # python3.x

Windows 平台升级:

python -m pip install -U pip   # python2.x
python -m pip3 install -U pip    # python3.x

 pip 清华大学开源软件镜像站

使用国内镜像速度会快很多,可用于临时使用:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

例如,安装 Django:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django

如果要设为默认需要升级 pip 到最新的版本 (>=10.0.0) 后进行配置:
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

 注意事项

如果 Python2 和 Python3 同时有 pip,则使用方法如下:

Python2:
python2 -m pip install XXX

Python3:
python3 -m pip install XXX

 pip命令常见报错

报错:'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件。
是因为没有加环境变量。
1、找到python的安装目录
2、把python的安装目录,和安装目录下的scripts加入到环境变量中


报错:Unknown or unsupperted command 'install'
是因为有地方把pip占用了
1、先执行where pip,发现可以找到好多pip
2、把其他的pip改成其他名字即可
安装时报错如下图,表示连接超时
我们直接用命令:pip install 库名,因网络太慢,导致下载超时~~~
针对在安装Python库出现的超时问题---总结了如下两种解决方案:

其一:
pip --default-timeout=100 install -U 库名
例如:
pip --default-timeout=100 install -U numpy

其二:
包源镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名
例如:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple superset

在实际操作中,我采用命令:
python -m pip --default-timeout=100 install -U 模块名
例如:
python -m pip --default-timeout=100 install -U matplotlib

常用模块

random模块

# random模块中的常用方法
randint() # 生成随机整数
shuffle() # 打乱列表中的值
...

random实例

import random # 使用模块前需要先导入

# 自动生成6位的数字随机验证码
def ran():
    code = str(random.randint(1,999999)).zfill(6)
    return code
for i in range(30):
    print(ran())

# 手动生成6位随机数验证码(通常不使用,使用下方string模块即可) print(''.join(random.sample('asdfghjklqwertyuiopzxcvbnm1234567890',6)))# 既包含字母又包含数字 k6a905 print(''.join(random.sample('0123456789',6)))# 只包含数字 89351 print(random.sample([1,2,3,4,5,6,7,8,9,0],6))# 在列表中随机取值6位 [6, 8, 1, 5, 2, 3]

string模块

import string
import random

# string模块中的常用方法

print(string.digits) # 输出所有的整数
print(string.ascii_lowercase)# 输出所有小写字母
print(string.ascii_uppercase) # 输入所有大写字母
print(string.ascii_letters)# 输出所有大写字母+小写字母
print(string.punctuation) # 输出所有的特殊符号


print(random.choice(string.digits)) # 随机取一个整数值
print(random.uniform(1,999999))# 随机取一个小数值

string实例

time模块

import time
# time模块中的常用方法 print(time.time()) # 获取当前时间戳,时间戳的好处,可以计算未来时间,比如三天后,如果是6月30日,+3的话计算的就不对了 print(time.strftime('%Y-%m-%d %H:%M:%S')) # 获取格式化好的当前时间:年月日 时分秒的格式 print(time.strftime('%a %b %d %H:%M:%S %Y'))# 获取格式化好的当前时间:星期 月份 日期 时:分:秒 年的格式 # 时间戳和格式化好的时间互相转换--时间戳转换为格式化好的时间 # 步骤: # 1、需要先把时间戳转换为时间元组 # 2、再把时间元组转换为格式化好的时间 time_tuper = time.gmtime()# 取UTC时间 time_tuper1 = time.localtime()# 取本地时间 time_tuper2 = time.localtime(1623222739.2786846) # 取传入的时间戳的时间 print('转换前的时间(时间元组格式):',' ',time_tuper,' ',time_tuper1,' ',time_tuper2) print('转换后的时间(格式化后的格式):',' ', time.strftime('%Y-%m-%d %H:%M:%S',time_tuper),' ', time.strftime('%Y-%m-%d %H:%M:%S',time_tuper1),' ', time.strftime('%Y-%m-%d %H:%M:%S',time_tuper2)) # 时间戳和格式化好的时间互相转换--格式化好的时间转换为时间戳 # 步骤: # 1、需要先把格式化好的转换为时间元组 # 2、再把时间元组转换为时间戳 time_tuper3 = time.strptime('2021-06-09 15:30:53','%Y-%m-%d %H:%M:%S') #传入格式化好的时间 print('转换成的时间元组:',time_tuper3) #转换为时间元组 print('转换成的时间戳:',time.mktime(time_tuper3)) #转换为时间戳
time模块总结:
1、时间分为时间戳,时间元组,格式化好的时间。如果需要实现时间戳和格式化好的时间转换,必须要先转换成时间元组。 时间戳格式:1595245796.8503652 时间元组格式:time.struct_time(tm_year=2020, tm_mon=7, tm_mday=20, tm_hour=19, tm_min=40, tm_sec=10, tm_wday=0, tm_yday=202, tm_isdst=-1) 格式化好的时间格式:2020-07-20 19:40:10 2、时间戳转换为格式化好的时间,使用time.strftime方法;格式化好的时间转换为时间戳,使用time.strptime方法。

时间日期格式化符号

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%l 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称,如Wed
%A 本地完整星期名称,如Wednesday
%b 本地简化的月份名称,如Jun
%B 本地完整的月份名称,如June
%c 本地简化的日期 月份,如Wed Jun
%j 当前日期是本年的第几天(001-366)
%p 本地AM.或PM.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地日期,格式:06/09/21(日/月/年)
%X 本地日期,格式:16:33:27(时:分:秒)
%Z 当前时区的名称,如:中国标准时间
%% %号本身

time实例

import calendar
cal = calendar.month(2021,6) # 输出某年某月的日历
print(cal)

更多内容参考:
https://www.runoob.com/python/python-date-time.html

os模块

os模块提供了多数操作系统的功能接口函数。

当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这时就离不了os模块
import os
# os模块常用方法

# 列出某个目录下的文件夹/文件,r代表不转义
print(os.listdir(r'D:文件ug_visual'))
# 判断传入的是不是一个文件
print(os.path.isfile(r'D:文件ug_visualug_statistics_1ug统计.xlsx'))
# 判断传入的是不是一个文件夹
print(os.path.isdir(r'D:文件ug_visualug_statistics_1ug统计.xlsx'))
# 创建目录:mkdir(),makedirs(),前者目录不存在会报错,后者目录不存在会创建
# os.mkdir(r'D:xiyang1xiyang1') # FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'D:\xiyang\xiyang' # os.mkdir(r'D:xiyang1') # os.makedirs(r'D:xiyang2xiyang2') # 多层级创建 # os.makedirs(r'D:xiyang2') # 单层级创建 os.rmdir(r'D:xiyang2') # 删除文件夹,不存在的文件夹或不为空的文件夹会报错
# 系统操作
print(os.getcwd()) # 获取当前python文件所在目录 D:softwarepython3.8.5Scriptsday1
os.chdir(r'D:softwarepython3.8.5Scriptsday2')
print(os.getcwd()) # 修改后的目录,D:softwarepython3.8.5Scriptsday1
os.rename(r'D:softwarepython3.8.5Scriptsday12.py',r'3.py')
print(os.cpu_count()) # 获取系统cpu的数量 result = os.system('ipconfig') # 执行操作系统命令,任何命令都可以执行,支持windows系统和linux系统 print('system执行结果-----',result) # 只能帮你执行,但拿不到结果,而且还会乱码 result1 = os.popen('ipconfig').read() print('popen执行结果-----',result1) # 即能帮你执行,也能拿到结果,且不会乱码
import os

print(os.path.dirname('D:softwarePyCharm 2020.1stu练习.py'))#获取上一级目录(父目录),要传绝对路径
print(os.path.join('D:\','users','a.txt'))#拼接路径
print(os.path.abspath('..'))#取绝对路径

print(os.path.exists('c:\uuu'))#判断文件夹是否存在,不存在返回false,存在返回True

print(os.path.split('C:\UserswangxinyuDesktop11.txt'))#把路径和文件名分割显示 print(os.path.getmtime(r'D:文件测试账号.xlsx'))#获取某个文件的修改时间,时间戳 print(os.path.getctime(r'D:文件测试账号.xlsx'))#获取某个文件的创建时间,时间戳 print(os.path.getatime(r'D:文件测试账号.xlsx'))#获取某个文件最近一次访问的时间,时间戳

 walk()方法

# 简介
os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

在Unix,Windows中有效。
# 语法 os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。 curr_dir 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list ,内容是传入目录中所有的目录的名字(不包括子目录) files 同样是 list , 内容是传入目录中所有的文件(不包括子目录) topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。 onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。 followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

os实例

import os
print(os.path.getsize('D:文件测试账号.xlsx'))# 获取文件的大小,单位字节

#循环指定目录下的文件夹及文件
for cur_dir,dirs,files in os.walk(r'D:文件', topdown=False):
    print('当前文件夹',cur_dir)
    print('当前目录下的文件夹',dirs)
    print('当前目录下的文件',files)
    # break#循环一次跳出循环
# 遍历传入目录的文件夹及文件
import
os for curr_dir, dirs, files in os.walk('d:文件', topdown=False): for file_name in files: # 遍历 d:文件 下的文件 print(os.path.join(curr_dir, file_name)) for dir_name in dirs: # 遍历 d:文件 下的文件夹 print(os.path.join(curr_dir, dir_name))
# 指定一个目录,然后找到这个目录下有哪些文件.mp4 .avi
import os
def find_movie(path):
    for cur_dir, dirs, files in os.walk(path):
        for file in files:
            if file.endswith('.mp4') or file.endswith('.avi'):
                print('在这个目录下发现了小电影:%s'%cur_dir)
                break
find_movie('c:')
学而时习之不亦说乎!
原文地址:https://www.cnblogs.com/wxinyu/p/14810074.html