这是机器未来的第31篇文章
原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125775227
1. os模块
1.1 文件和目录操作相关
1.1.1 创建目录
- mkdir 创建目录,上一级目录必须存在,如果不存在会报错FileNotFoundError; 文件存在的时候也报错:FileExistsError
import os
# 支持相对路径和绝对路径
os.mkdir("./models")
os.mkdir("i:\\BaiduSyncdisk\\新媒体\\Python快速入门系列\\models2")# r前缀标识后面跟的都是原始字符串,无需转义
os.mkdir(r"i:\BaiduSyncdisk\新媒体\Python快速入门系列\models3")
"""
如果目录已存在,则会报错
"""import os
os.mkdir("./models")
---------------------------------------------------------------------------
FileExistsError Traceback (most recent call last)
C:\Users\ZHOUSH~1\AppData\Local\Temp/ipykernel_13192/3996702968.py in <module>
3 import os
4
----> 5 print(os.mkdir("./models"))
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: './models'
"""
如果上级目录不存在,则会报错
"""import os
os.mkdir("./models4/demo")
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
C:\Users\ZHOUSH~1\AppData\Local\Temp/ipykernel_13192/1843598940.py in <module>
4 import os
5
----> 6 os.mkdir("./models4/demo")
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: './models4/demo'
- mkdirs 创建目录,上一级目录不存在也会创建
import os
os.makedirs("./models4/demo")
1.1.2 删除目录
- rmdir
删除指定的空目录, 如果目录不为空会报错
import os
os.rmdir('c:/abc/def/xyz')
- removedirs 删除空目录,删除之后还会看上一级目录是不是空的,如果是空的,也会一起删除,直到不为空为止
import os
os.removedirs('c:/abc/def2/xyz2')
1.1.3 删除文件
- remove
# 删除指定的文件
os.remove('c:/abc/def/a.txt')
1.1.4 重命名文件或目录
- rename 重命名文件或者文件夹
# rename 重命名文件或者文件夹
os.rename('c:/abc/def','c:/abc/def_new')
os.rename('b.txt','b_new.txt')
- renames 相当于移动文件
# renames 相当于移动文件
os.renames('c:/abc/def_new/a.txt','c:/abc/a_new.txt')
1.1.5 返回当前工作目录
- getcwd
# getcwd 返回当前工作的目录
os.getcwd()
'i:\\BaiduSyncdisk\\新媒体\\Python快速入门系列'
1.1.6 返回当前目录下的文件
- listdir
# listdir 返回当前目录下的文件
os.listdir()
['Python快速入门系列(1)人工智能序章:开发环境搭建Anaconda+VsCode+JupyterNotebook(零基础启动).md',
'Python快速入门系列(10)类的设计哲学:自然法则的具现.md',
'Python快速入门系列(11)函数、类、模块和包如何构建四级模块化体系.md',
'Python快速入门系列(12)面向Bug编程.ipynb',
'Python快速入门系列(12)面向Bug编程.md',
'Python快速入门系列(13)面对海量数据,怎样加载数据集.md.md',
'Python快速入门系列(15)常用的Python包标准库.ipynb',
'Python快速入门系列(2)一文快速掌握Python基础语法.md',
'Python快速入门系列(3)AI数据容器底层核心之Python列表.md',
'Python快速入门系列(4)python存储机制:浅拷贝与深拷贝.md',
'Python快速入门系列(5)Python只读数据容器之元组.md',
'Python快速入门系列(6)Python数据容器之序列:字符串、列表与元组对比.md',
'Python快速入门系列(7)Python数据容器之字典.md',
'Python快速入门系列(8)Python数据容器之集合.md',
'Python快速入门系列(9)高级程序员绝世心法——模块化之函数封装.md',
'Python快速入门系列-Day1 环境安装:VsCode+Anaconda.md',
'Python快速入门系列-Day2 基础语法.md',
'Python快速入门系列-Day3 数据结构之列表.md',
'Python快速入门系列-Day4 数据结构之元组.md',
'Python快速入门系列-Day5 数据结构之序列:字符串、列表与元组.md',
'Python快速入门系列-Day6 数据结构之字典.md',
'Python快速入门系列-Day7 数据结构之集合.md',
'Python快速入门系列-Day8 函数.md',
'slogon-3-python.png',
'slogon-4.png']
1.2 路径操作
os.path
1.2.1 os.path.abspath - 获取指定文件的绝对路径
import os.path
# 返回绝对路径
p1 = os.path.abspath('slogon-4.png')# 返回当前目录的路径
p2 = os.path.abspath('.')print(p1, p2)
i:\BaiduSyncdisk\新媒体\Python快速入门系列\slogon-4.png i:\BaiduSyncdisk\新媒体\Python快速入门系列
1.2.2 os.path.basename - 获得路径中的文件名
import os.path
# basename 返回路径中最后一部分的内容
os.path.basename('/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
'uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg'
1.2.3 os.path.dirname - 获得路径中的目录名
import os.path
# dirname 返回路径中除了最后一部分的其他内容
os.path.dirname('/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
'/data/data107/cat_12_train'
1.2.4 os.path.split - 拆分路径为目录名和文件名
import os.path
# split 将路径拆分成dirname和basename, 返回值为元组
os.path.split('/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
('/data/data107/cat_12_train', 'uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
1.2.5 os.path.join(path,name) - 连接目录与文件名或目录
这个函数在访问数据集的时候非常有用,数据集的标签一般为【文件名 标签】的形式,像这样
cat_12_train/wdBo7Qe1NTHuAn3t46iZDR0pvIl5yOVk.jpg 11
cat_12_train/BjF9wTmXCONM5HQizbLAful2xPdI6YKp.jpg 11
cat_12_train/NXe97uRzlM4iY1n25KgaI8jQoBvSt3rA.jpg 11
cat_12_train/L09SBu8VIbc6s7KGxzHiF125X4yUa3em.jpg 11
cat_12_train/fZSXcV9NCjm3qKEtLolhzvxMF8HDadAb.jpg 11
cat_12_train/Q51VeqXfMzEv9oJywRBOpubhU3txZCs6.jpg 11
cat_12_train/wmF9K4ZOqaznV1RDNBx65dYyT3hlJrP0.jpg 11
cat_12_train/z2lfTG1OJPYLyahQ0gtRoD3AW8Nvmkxe.jpg 11
cat_12_train/qfySvGFBOVcJzPEXHlsg7e1U3L2K6iAC.jpg 11
cat_12_train/D0gWHAKPN52SET1skGmCzQ6Oojle4vxp.jpg 11
cat_12_train/75HFSWMcflN9JgKuz8kIyDqRGL6UtiQ0.jpg 11
cat_12_train/LnNRq485zfeGiAYjyHvlbmP6ME2CgFSW.jpg 11
cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg 11
根据python运行目录,组合出实际的路径,访问数据集中的文件。
import os.path
# join 将dirname和basename组合起来
os.path.join('/data/data107/','cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
'/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg'
1.2.6 os.path.exists - 判断路径是否存在
支持相对路径和绝对路径
import os.path
# exists 判断路径是否存在,如果存在返回True,如果不存在返回False
r1 = os.path.exists('./Python快速入门系列(15)常用的Python包标准库.ipynb')
r2 = os.path.exists(r'I:\BaiduSyncdisk\新媒体\Python快速入门系列\Python快速入门系列(15)常用的Python包标准库.ipynb')print(r1, r2)
True True
1.3 命令执行
- system
# 缺少包时可以直接安装或下载数据集# system 执行shell命令,0 代表执行成功,1代表执行失败
cmd ='pip install numpy2'
os.system(cmd)
- popen popen也可以运行操作系统命令,并通过read()方法将命令的结果返回,不像system只能看不能存,这个能存!
f = os.popen('ipconfig')print(f.read())
f.close()
Windows IP 配置
以太网适配器 以太网 3:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::fce9:959:265d:b80b%22
IPv4 地址 . . . . . . . . . . . . : 2.0.0.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
- subprocess
subprocess这个模块来产生子进程,并且可以连接到子进程的标准输入、输出、错误中,还可以获得子进程的返回值。使用subprocess模块的目的是用于替换os.system等一些旧的模块和方法。subprocess可以实现更加复杂的交互。
import subprocess
subprocess.call(['ls','-l'])
0
# 获得命令执行输出import subprocess
result = subprocess.check_output(['ls','-l','models4'],shell=True)print(result.decode('utf-8'))
total 0
drwxr-xr-x 2 zhoushimin Administrators 0 Jul 13 23:02 demo
2. sys模块
2.1 系统环境变量
sys.path是一个python运行的环境变量,是python运行时包的搜索路径列表,是一个列表形式,可以通过API添加或删除其中的路径。
import sys
sys.path
['i:\\BaiduSyncdisk\\新媒体\\Python快速入门系列',
'd:\\Tools\\Anaconda3\\python37.zip',
'd:\\Tools\\Anaconda3\\DLLs',
'd:\\Tools\\Anaconda3\\lib',
'd:\\Tools\\Anaconda3',
'',
'd:\\Tools\\Anaconda3\\lib\\site-packages',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\locket-0.2.1-py3.7.egg',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\win32',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\win32\\lib',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\Pythonwin',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\zhoushimin\\.ipython']
# 添加环境变量:在导入未安装的包时,通过这种方式非常方便
sys.path.append('D:/')
sys.path
['i:\\BaiduSyncdisk\\新媒体\\Python快速入门系列',
'd:\\Tools\\Anaconda3\\python37.zip',
'd:\\Tools\\Anaconda3\\DLLs',
'd:\\Tools\\Anaconda3\\lib',
'd:\\Tools\\Anaconda3',
'',
'd:\\Tools\\Anaconda3\\lib\\site-packages',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\locket-0.2.1-py3.7.egg',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\win32',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\win32\\lib',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\Pythonwin',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\zhoushimin\\.ipython',
'D:/']
可以看到d:\根目录已经添加到环境变量之中了。
sys.path.remove('D:/')
sys.path
['i:\\BaiduSyncdisk\\新媒体\\Python快速入门系列',
'd:\\Tools\\Anaconda3\\python37.zip',
'd:\\Tools\\Anaconda3\\DLLs',
'd:\\Tools\\Anaconda3\\lib',
'd:\\Tools\\Anaconda3',
'',
'd:\\Tools\\Anaconda3\\lib\\site-packages',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\locket-0.2.1-py3.7.egg',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\win32',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\win32\\lib',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\Pythonwin',
'd:\\Tools\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\zhoushimin\\.ipython']
可以看到刚才添加的环境变量D:/已经消失了。
2.2 查看系统环境参数
- 查看操作系统
sys.platform # 获取操作系统
'win32'
sys.version # 获取python解释器程序的版本信息
'3.7.11 (default, Jul 27 2021, 09:42:29) [MSC v.1916 64 bit (AMD64)]'
sys.getdefaultencoding()# 获取系统当前的编码
'utf-8'
3. logging模块
logging是python日志模块的标准库,用于在程序运行中跟踪程序运行状态、异常信息记录便于事后排查问题等目的。
默认的日志级别是warning
basicConfig:只会在第一次调用的时候起作用
参数:
level:设置日志级别,默认warning
format:
- %(levelname)s:日志级别名称
- %(name)s:日志器名称
- %(message)s:日志信息
- %(asctime)s:日志的时间
datefmt:设置时间格式
import logging
import os
file_name = os.getcwd()
logging.basicConfig(filename='my_log.log',level=logging.INFO,format='%(asctime)s--%(levelname)s:%(message)s',datefmt='%Y/%m/%d %H:%M:%S')
logging.debug('这是一个debug')
logging.info('这是一个info')
logging.warning('这是一个warning')
logging.error('这是一个error')
logging.critical('这是一个critical')
2022/07/13 23:54:28--INFO:这是一个info
2022/07/13 23:54:28--WARNING:这是一个warning
2022/07/13 23:54:28--ERROR:这是一个error
2022/07/13 23:54:28--CRITICAL:这是一个critical
《Python零基础快速入门系列》快速导航:
- 【Python零基础入门笔记 | 01】 人工智能序章:开发环境搭建Anaconda+VsCode+JupyterNotebook(零基础启动)
- 【Python零基础入门笔记 | 02】一文快速掌握Python基础语法
- 【Python零基础入门笔记 | 03】AI数据容器底层核心之Python列表
- 【Python零基础入门笔记 | 04】为什么内存中最多只有一个“Love“?一文读懂Python内存存储机制
- 【Python零基础入门笔记 | 05】Python只读数据容器:列表List的兄弟,元组tuple
- 【Python零基础入门笔记 | 06】字符串、列表、元组原来是一伙的?快看序列Sequence
- 【Python零基础入门笔记 | 07】成双成对之Python数据容器字典
- 【Python零基础入门笔记 | 08】无序、不重复、元素只读,Python数据容器之集合
- 【Python零基础入门笔记 | 09】高级程序员绝世心法——模块化之函数封装
- 【Python零基础入门笔记 | 10】类的设计哲学:自然法则的具现
- 【Python零基础入门笔记 | 11】函数、类、模块和包如何构建四级模块化体系
- 【Python零基础入门笔记 | 12】程序员为什么自嘲面向Bug编程?
- 【Python零基础入门笔记 | 13】面对海量数据,如何优雅地加载数据?请看迭代器与生成器
- 【Python零基础入门笔记 | 14】深度学习如何保存训练好的模型,请看数据持久化之文件操作(1)
- 【Python零基础入门笔记 | 14】深度学习如何保存训练好的模型,请看数据持久化之文件操作(2)
写在末尾:
- 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
- 专栏简介:本专栏的核心就是:快!快!快!2周快速拿下Python,具备项目开发能力,为机器学习和深度学习做准备。
- 面向人群:零基础编程爱好者
- 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待 - Python零基础快速入门系列- 快速入门Python数据科学系列- 人工智能开发环境搭建系列- 机器学习系列- 物体检测快速入门系列- 自动驾驶物体检测系列- …
版权归原作者 i机器未来 所有, 如有侵权,请联系我们删除。