网站首页 > 技术文章 正文
1.os
1.1 作用
主要是和操作系统相关的一个模块,如可以进行文件/目录的创建、删除等
1.2 导入
import os
1.3 常用方法及说明
常用方法 | 说明 |
os.getcwd() | 获取当前路径 |
os.chdir(path) | 改变当前工作目录 |
os.listdir(path) | 列出指定路径下的所有文件和子目录,以列表形式展示 |
os.mkdir('dirname') | 创建文件夹 |
os.makedirs('dirname1/dirname2') | 可以生成多层递归目录 |
os.removedirs('dirname') | 若目录为空,则删除,并递归到上一层目录,若也为空,则删除。 |
os.rmdir('dirname') | 删除空目录,若目录不为空则报错 |
os.remove() | 删除一个文件 |
os.rename('oldname','newname') | 重命名文件/目录 |
os.stat('path/filename'') | 获取文件/目录信息 |
os.sep | 输入操作系统特定的路径分隔符,win下为'\',Linux为'/' |
os.name | 获取当前的平台,win为'nt' ,Linux为'posix' |
os.system('command') | 运行shell命令 |
os.environ | 获取系统环境变量 |
os.path.abspath(path) | 返回path的绝对路径 |
os.path.split(path) | 将path分割成目录和文件名的元组 |
os.path.splittext(path) | 分割路径,返回路径名和文件扩展名的元祖 |
os.path.dirname(path) | 返回path的上一层目录 |
os.path.basename(path) | 返回path中最后的文件名 |
os.path.exist(path) | 若path存在返回True,否则返回False |
os.path.isfile(path) | 若path是一个文件则返回Ture,否则返回False |
os.path.isdir(path) | 若path是一个目录则返回Ture,否则返回False |
os.path.isabs(path) | 若path是绝对路径则返回Ture,否则返回False |
os.path.join(path1[, path2[, ...]]) | 把目录和文件名合成一个路径 |
os.path.getsize(path) | 返回文件大小,如果文件不存在就报错 |
os.path.getmtime(path) | 返回最近文件修改时间 |
os.path.getctime(path) | 返回文件path创建时间 |
os.path.realpath(path) | 返回path的真实路径 |
os.path.normpath(path) | 返回path的真实路径 |
1.4 示例
import os
print(os.getcwd()) #获取当前路径 ,输出:E:\project\demo_mod
print(os.listdir()) #列出当前目录下的所有文件和目录 ,输出:['.idea', 'abc.txt', 'demo_os.py']
os.mkdir("aaa") #创建文件夹aaa
os.rmdir("aaa") #删除空目录aaa
os.makedirs("abc/bcd") #创建多层文件夹abc/bcd
os.removedirs("abc/bcd") #删除多层多文件abc/bcd
print(os.stat('abc.txt')) # 输出 :os.stat_result(st_mode=33206, st_ino=562949953424572, st_dev
print(os.path.abspath(".")) # 返回当前路径的绝对路径 ,输出 :E:\project\demo_mod
os.path.exists(r"E:\project\demo01") # 判断path是否存在 ,输出:False
os.path.isfile("abc.txt") # 判断abc.txt是文件 ,输出:True
print(os.path.split(r"E:\project\demo_mod\abc.txt")) # ('E:\\project\\demo_mod', 'abc.txt')
print(os.path.dirname(r"E:\project\demo_mod\abc.txt")) # E:\project\demo_mod
2.sys
2.1 作用
针对python解释器相关的变量和方法
2.2 导入
import sys
2.3 常用方法及说明
属性/方法 | 说明 |
sys.argv | 命令行参数,第一个参数为脚本名字 |
sys.modules | 所有加载到内存的模块都放在modules |
sys.path | 返回查找模块的搜索路径,以列表返回 |
sys.platform | 返回操作系统平台名词 |
sys.version | 返回python解释器程序的版本信息 |
sys.exit() | 退出程序 |
2.4 示例
import sys
print("获取默认第一个参数:",sys.argv)
print("获取系统路径:",sys.path)
print("获取当前平台:",sys.platform)
print("获取当前版本:",sys.version)
#返回:
获取默认第一个参数: ['E:/project/demo_mod/demo02_sys.py']
获取系统路径: ['E:\\project\\demo_mod', 'E:\\project\\demo_mod', 'C:\\python36\\python36.zip', 'C:\\python36\\DLLs', 'C:\\python36\\lib', 'C:\\python36', 'C:\\python36\\lib\\site-packages']
获取当前平台: win32
获取当前版本: 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)
3.time
3.1 作用
和时间相关的模块
3.2 导入
import time
3.3 常用方法及说明
方法 | 说明 |
time.time() | 获取当前时间戳 |
time.sleep(n) | 当前线程停止运行n秒 |
time.asctime() | 返回当前时间,格式是西欧格式 |
time.ctime() | 返回当前时间,格式是西欧格式 |
time.localtime() | 返回当前时间对象 |
time.struct_time() | 构造一个对应的事件对象 |
time.strftime() | 将一个时间对象格式化为特定的字符串输出 |
time.strptime() | 照格式化字符把一个格式化时间字符串转成元组。 |
3.4 示例
import time
print("获取当前时间戳:",time.time())
print("返回当前时间,西欧格式:",time.ctime())
print("返回当前时间对象:",time.localtime())
time.sleep(2) #睡眠2s
print("返回格式化后的时间:",time.strftime("%Y-%m-%d %X", time.localtime()))
print("将格式化的时间转化成时间对象,元祖形式:",time.strptime('2010-8-11 7:26:16', '%Y-%m-%d %X'))
#返回:
获取当前时间戳: 1634373068.0492582
返回当前时间,西欧格式: Sat Oct 16 16:31:08 2021
返回当前时间对象: time.struct_time(tm_year=2021, tm_mon=10, tm_mday=16, tm_hour=16, tm_min=31, tm_sec=8, tm_wday=5, tm_yday=289, tm_isdst=0)
返回格式化后的时间: 2021-10-16 16:31:10
将格式化的时间转化成时间对象,元祖形式: time.struct_time(tm_year=2010, tm_mon=8, tm_mday=11, tm_hour=7, tm_min=26, tm_sec=16, tm_wday=2, tm_yday=223, tm_isdst=-1)
4.datetime
4.1 作用
关于时间和日期的模块 ,这里面有几个常用的类,包括:
- date : 日期类
- time : 时间类
- datetime : 日期和时间的类 ,相当于前面的两个类
- datedelta : 时间间隔
4.2 导入
4.3 常用方法及说明
from datetime import date
d = date(date(2020,11,20))
下面表格中的d就是上面的日期对象
属性/方法 | 说明 |
date.max | 返回最大的日期对象 |
date.min | 返回最小的日期对象 |
d.year | 返回2020 |
d.month | 返回11 |
d.day | 返回20 |
d.replace(year,month,day) | 生成并返回一个新的日期对象,原日期对象不变 |
d.timetuple() | 返回日期对应的time.struct_time对象 |
d.toordinal() | 返回日期自0001-01-01开始的第多少天 |
d.weekday() | 返回日期是星期几,[0, 6],0表示星期一 |
d.isoweekday() | 返回日期是星期几,[1, 7], 1表示星期一 |
d.isocalendar() | 返回一个元组,格式为:(year, weekday, isoweekday) |
d.isoformat() | 返回‘YYYY-MM-DD'格式的日期字符串 |
d.strftime(format) | 返回指定格式的日期字符串,与time模块的strftime(forma t, struct_time)功能相同 |
from datetime import time
t = time(20,51,32)
下面表格中的t就是上面的时间对象
属性/方法 | 说明 |
t.hour | 返回20,取值范围[0,23] |
t.minute | 返回51,取值范围在[0,59] |
t.second | 返32,取值范围在[0,59] |
t.microsecond | 微秒 |
t.tzinfo | 返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None |
t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]]) | 生成并返回一个新的时间对象,原时间对象不变 |
t.isoformat() | 返回一个‘HH:MM:SS.%f'格式的时间字符串 |
t.strftime() | 返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同 |
from datetime import datetime
dt = datetime(2020,09,22,10,35,28,322)
下面表格中的dt就是上面的日期时间对象
属性/方法 | 说明 |
dt.year | 返回2020 |
dt.month | 返回09 |
dt.day | 返回22 |
dt.hour | 返回10 |
dt.minute | 返回35 |
dt.second | 返回28 |
dt.microsecond | 返回322 |
datetime.today() | 返回一个表示当前本期日期时间的datetime对象 |
datetime.now([tz]) | 返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上 |
datetime.utcnow() | 返回当前utc日期时间的datetime对象 |
datetime.fromtimestamp(timestamp[, tz]) | 根据指定的时间戳创建一个datetime对象 |
datetime.utcfromtimestamp(timestamp) | 根据指定的时间戳创建一个datetime对象 |
datetime.combine(date, time) | 把指定的date和time对象整合成一个datetime对象 |
datetime.strptime(date_str, format) | 将时间字符串转换为datetime对象 |
datetime.timedelta() | 返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作 |
4.4 示例
date示例
from datetime import date
now = date(2021, 10, 16)
tomorrow = now.replace(day = 17)
print('今天日期:', date.today())
print('今天日期:', now,)
print('明天日期:', tomorrow)
print("日期的元祖", now.timetuple())
print('返回星期几,0代表星期一:', now.weekday())
print('返回星期几,1代表星期一:', now.isoweekday())
print( '返回一个元祖', now.isocalendar())
print( '返回日期字符串:', now.isoformat())
print( '返回格式化的日期:', now.strftime("%Y-%m-%d"))
#输出:
今天日期: 2021-10-16
今天日期: 2021-10-16
明天日期: 2021-10-17
日期的元祖 time.struct_time(tm_year=2021, tm_mon=10, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=289, tm_isdst=-1)
返回星期几,0代表星期一: 5
返回星期几,1代表星期一: 6
返回一个元祖 (2021, 41, 6)
返回日期字符串: 2021-10-16
返回格式化的日期: 2021-10-16
time示例
from datetime import time
t1 = time(17,25,15)
print("显示小时:",t1.hour)
print("显示分钟:",t1.minute)
print("显示秒:",t1.second)
print("显示微秒:",t1.microsecond)
tm1 = t1.replace(minute=32)
print("替换后时间:",tm1)
print('返回时间字符串:', t1.isoformat())
print('返回格式化后的时间字符串', t1.strftime("%X"))
#输出:
显示小时: 17
显示分钟: 25
显示秒: 15
显示微秒: 0
替换后时间: 17:32:15
返回时间字符串: 17:25:15
返回格式化后的时间字符串 17:25:15
datetime示例
from datetime import datetime
print('最大时间:', datetime.max)
print('最小时间:', datetime.min)
print('今天时间,精确到微秒:', datetime.today())
print('现在时间,精确到微秒::', datetime.now())
print("格式化日期:",datetime.strftime(datetime.now(),"%y-%m-%d %H:%M:%S"))
#输出 :
最大时间: 9999-12-31 23:59:59.999999
最小时间: 0001-01-01 00:00:00
今天时间,精确到微秒: 2021-10-16 17:41:08.807900
现在时间,精确到微秒:: 2021-10-16 17:41:08.807900
格式化日期: 21-10-16 17:41:08
timedelta示例
from datetime import timedelta,datetime
dt = datetime.now()
#日期减一天
dt1 = dt + timedelta(days=-1) #昨天
dt2 = dt - timedelta(days=1) #昨天
dt3 = dt + timedelta(days=1) #明天
delta_obj = dt3-dt
print("当前日期-1:",dt1)
print("当前日期-1:",dt2)
print("当前日期+1:",dt3)
print("相差几天:",delta_obj)
#输出:
当前日期-1: 2021-10-15 17:45:39.574903
当前日期-1: 2021-10-15 17:45:39.574903
当前日期+1: 2021-10-17 17:45:39.574903
相差几天: 1 day, 0:00:00
5.random
5.1 作用
用于生成随机数
5.2 导入
import random
5.3 常用方法及说明
方法 | 说明 |
random.random() | 用于生成一个0~1的随机浮点数 |
random.uniform(a,b) | 用于生成一个指定范围内的随机浮点数 |
random.randint(a,b) | 用于生成一个指定范围内的整数 |
random.randrange(start,end,step) | 从指定范围内,按指定基数递增的集合中 获取一个随机数。 |
random.choice(sequence) | 从序列中获取一个随机数 |
random.shuffle(x[, random]) | 用于将一个列表中的元素打乱,即将列表内的元素随机排列。 |
random.sample(sequence, k) | 从指定序列中随机获取指定长度的片断并随机排列。 |
5.4 示例
import random
print("生成一个0~1的随机数:",random.random())
print("生成一个指定范围内的随机数:",random.uniform(1,10))
print("生成一个指定范围的随机整数:",random.randint(1,100))
print("生成指定集合,然后随机生成一个数:",random.randrange(1,5,1))
print("从列表中随机拿一个数:",random.choice(['a','b','c','d']))
print("指定的长度中随机排序",random.sample(['a','b','c','d'],3))
lst = [1,3,46,33,'a','b','c','d']
random.shuffle(lst)
print("列表被打乱后随机排序",lst)
#输出:
生成一个0~1的随机数: 0.06636579979518498
生成一个指定范围内的随机数: 7.29403347010388
生成一个指定范围的随机整数: 93
生成指定集合,然后随机生成一个数: 3
从列表中随机拿一个数: c
指定的长度中随机排序 ['d', 'b', 'a']
列表被打乱后随机排序 ['a', 3, 46, 'b', 1, 'c', 33, 'd']
6.subprocess
6.1 作用
执行系统命令
6.2 导入
import subprocess
6.3 常用方法及说明
方法 | 说明 |
subprocess.call(command) | 执行命令,返回状态码 |
subprocess.run() | 执行命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。 |
subprocess.check_call(command) | 执行命令,如果执行状态码是0,则返回0,否则抛出异常 |
subprocess.check_output() | 执行命令,如果执行状态码是0,则返回命令执行结果,否则抛出异常 |
subprocess.getoutput(cmd) | 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)。 |
subprocess.getstatusoutput(cmd) | 执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()。 |
subprocess.Popen() | 可以执行各种命令,以上的那些方法都是基于此类实现的。 |
6.4 示例
import subprocess
# 查看当前目录下的文件 ,以下三条命令必须指定shell参数 ,否则会报错
subprocess.run(["dir"],shell=True)
subprocess.run(["java","-version"])
subprocess.call("dir",shell=True)
subprocess.check_call("dir",shell=True)
# 以下两条方法专门就是执行shell命令的 。
subprocess.getoutput("dir")
subprocess.getstatusoutput("dir")
#输出 :以上都可以返回命令执行后的结果
7.hashlib
7.1 作用
用于加密相关的操作
7.2 导入
import hashlib
7.3 常用方法及说明
方法 | 说明 |
hashlib.md5() | 进行md5算法加密 |
hashlib.sha1() | 进行SHA1算法加密 |
hashlib.sha224() | 进行SHA224算法加密 |
hashlib.sha256() | 进行SHA256算法加密 |
hashlib.sha384() | 进行SHA384算法加密 |
7.4 示例
import hashlib
m1 = hashlib.md5('hello python'.encode(encoding='utf-8')) # 构建MD5对象
print(m1.hexdigest()) # 结果为: e5d3024684c9be1dd3f6114ecc8bbdddc
sh224 = hashlib.sha224("hello python".encode('utf-8'))
print(sh224.hexdigest())
sh256 = hashlib.sha256("hello python".encode('utf-8'))
print(sh256.hexdigest())
sh384 = hashlib.sha384("hello python".encode('utf-8'))
print(sh384.hexdigest())
#结果输出:
e53024684c9be1dd3f6114ecc8bbdddc
7f78ad20eff5afc21166e6a5e22962a2819bd28d335ba95ff414b3f5
373a23512f9531ad49ec6ad43ecdda58df01e59d9ec5812d601fd05cc53345d3
eaf44aabb38c34ff948e714b9c3c08f3fed996d74fc9f1225d7368ccb386465df272e55912041921eddf13b51aff833c
8.json
8.1 作用
编码或解码json对象
8.2 导入
import json
8.3 常用方法及说明
方法 | 说明 |
json.dumps() | 将python对象转化成json字符串 |
json.loads() | 将json字符串转化为python对象 |
json.dump() | 将python对象转化成json字符串并存入文件 |
json.load() | 从文件读取字符串转化成python对象 |
8.4 示例
import json
# 1.字符串(json) --> 字典
color = '{"1":"red","2":"green","3":"blue","4":"black"}'
color_dict = json.loads(color)
print("color_dict:",color_dict)
# 2.字典 --> json
color_json = json.dumps(color_dict)
print("color_json:",color_json)
# 3.(json)文件 --> 字典
with open("color.json") as f:
dt = json.load(f)
print("dt:",dt)
# 4.dict --> (json)文件
with open("color1.json","w") as f1:
json.dump(dt,f1) #将python字典数据写入color1.json
#输出 :
color_dict: {'1': 'red', '2': 'green', '3': 'blue', '4': 'black'}
color_json: {"1": "red", "2": "green", "3": "blue", "4": "black"}
dt: {'1': 'red', '2': 'green', '3': 'blue', '4': 'black'}
9.pickle
9.1 作用
用于序列化的模块
9.2 导入
import pickle
9.3 常用方法及说明
方法 | 说明 |
pickle.dumps() | 将数据通过特殊的形式转换为只有python语言认识的字符串 |
pickle.loads() | 将pickle数据转换为python的数据结构 |
pickle.dump() | 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件 |
pickle.load() | 从数据文件中读取数据,并转换为python的数据结构 |
9.4 示例
import pickle
# 1.序列化
color = ["red","green","blue","black"]
color_byte = pickle.dumps(color)
print("color_byte:",color_byte)
# 反序列化即字节转列表(python数据类型)
color_obj = pickle.loads(color_byte)
print("color_obj:",color_obj)
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
p = Person('zhangsan',21)
# 3.持久化到文件
with open("color.txt","wb") as f:
dt = pickle.dump(p,f)
# 4. 从文件读取数据
with open("color.txt","rb") as f:
p_data = pickle.load(f)
print(p_data)
#输出 :
color_byte: b'\x80\x03]q\x00(X\x03\x00\x00\x00redq\x01X\x05\x00\x00\x00greenq\x02X\x04\x00\x00\x00blueq\x03X\x05\x00\x00\x00blackq\x04e.'
color_obj: ['red', 'green', 'blue', 'black']
<__main__.Person object at 0x03A4B050>
10.shutil
10.1 作用
主要用于文件或目录的复制或归档的操作
10.2 导入
import shutil
10.3 常用方法及说明
方法 | 说明 |
shutil.copy('源文件','目标地址') | 复制文件 |
shutil.copy2('源文件','目标地址') | 复制文件,暴露元数据 |
shutil.copyfileobj(open('源文件','r'),open('目标文件','w')) | 讲一个文件的内容拷贝到另外一个文件当中 |
shutil.copyfile('源文件','目标文件') | 将一个文件的内容拷贝到另外一个文件中 |
shutil.copytree('源目录','目标目录') | 复制整个目录 |
shutil.copymode() | 拷贝权限 |
shutil.copystat() | 拷贝元数据(状态) |
shutil.rmtree() | 移除整个目录,无论是否为空 |
shutil.move('源地址','目标地址') | 移动文件或文件夹 |
shutil.which('命令字符串') | 检测命令对应的文件路径 |
shutil.disk_usage('盘符') | 检测磁盘使用信息 |
shutil.make_archive('目标文件路径','归档文件后缀','需要归档的目录') | 归档函数,归档操作 |
shutil.unpack_archive('归档文件路径','解包目标文件夹') | 解包操作 |
shutil.get_archive_formats() | 获取当前系统已注册的归档文件格式(后缀) |
shutil.get_unpack_formats() | 获取当前系统已经注册的解包文件格式(后缀) |
10.4 示例
import shutil
shutil.copy('abc.txt','bcd.txt')
shutil.copy2('abc.txt','ddd.txt')
# 基于文件流的复制,目标文件必须存在
with open("abc.txt","rb") as f ,open("ddd.txt","wb") as s:
shutil.copyfileobj(f,s)
shutil.copyfile('abc.txt','acc.txt') # 目标文件无须存在
shutil.copymode('abc.txt','acc.txt') # 仅拷贝权限,内容,组,用户均不变,目标文件必须存在
# 文件夹压缩,不可压缩文件
shutil.make_archive("a1","zip","E:\project\demo2801")
# 备注 :以上都直接形成文件
因篇幅有限,故另外一部分放在下一篇文章 。
- 上一篇: Python日期和时间
- 下一篇: Python合集之Python字符串常用操作(一)
猜你喜欢
- 2024-11-20 Python基础编程——算术运算
- 2024-11-20 Python字符串方法之-字符串填充
- 2024-11-20 Python第14题:最长公共前缀【leetcode】
- 2024-11-20 从 0 到 1:构建强大且易用的规则引擎
- 2024-11-20 分享3个干货满满的Python实战项目,点赞收藏
- 2024-11-20 python笔记8:静静一起来学习-字符串相关方法
- 2024-11-20 零基础Python完全自学教程14:Python中的序列知识详解
- 2024-11-20 你需要了解的最重要的Python概念
- 2024-11-20 Python整数缓存机制
- 2024-11-20 老鸟进阶必备技能,看懂显示器参数
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)