这是机器未来的第31篇文章
原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125775227
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
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
4 import os
5
----> 6 os.mkdir("./models4/demo")
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: './models4/demo'
import os
os.makedirs("./models4/demo")
删除指定的空目录, 如果目录不为空会报错
import os
os.rmdir('c:/abc/def/xyz')
import os
os.removedirs('c:/abc/def2/xyz2')
# 删除指定的文件
os.remove('c:/abc/def/a.txt')
# rename 重命名文件或者文件夹
os.rename('c:/abc/def','c:/abc/def_new')
os.rename('b.txt','b_new.txt')
# renames 相当于移动文件
os.renames('c:/abc/def_new/a.txt','c:/abc/a_new.txt')
# getcwd 返回当前工作的目录
os.getcwd()
'i:\\BaiduSyncdisk\\新媒体\\Python快速入门系列'
# 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']
os.path
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快速入门系列
import os.path
# basename 返回路径中最后一部分的内容
os.path.basename('/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
'uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg'
import os.path
# dirname 返回路径中除了最后一部分的其他内容
os.path.dirname('/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
'/data/data107/cat_12_train'
import os.path
# split 将路径拆分成dirname和basename, 返回值为元组
os.path.split('/data/data107/cat_12_train/uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
('/data/data107/cat_12_train', 'uklg2DrLwtj8nA45eGbhivoQBcJNXyfY.jpg')
这个函数在访问数据集的时候非常有用,数据集的标签一般为【文件名 标签】的形式,像这样
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'
支持相对路径和绝对路径
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
# 缺少包时可以直接安装或下载数据集
# system 执行shell命令,0 代表执行成功,1代表执行失败
cmd = 'pip install numpy2'
os.system(cmd)
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模块的目的是用于替换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
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:/已经消失了。
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'
logging是python日志模块的标准库,用于在程序运行中跟踪程序运行状态、异常信息记录便于事后排查问题等目的。
默认的日志级别是warning
basicConfig:只会在第一次调用的时候起作用
参数:
level:设置日志级别,默认warning
format:
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零基础快速入门系列》快速导航:
写在末尾:
- 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
- 专栏简介:本专栏的核心就是:快!快!快!2周快速拿下Python,具备项目开发能力,为机器学习和深度学习做准备。
- 面向人群:零基础编程爱好者
- 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待
- Python零基础快速入门系列
- 快速入门Python数据科学系列
- 人工智能开发环境搭建系列
- 机器学习系列
- 物体检测快速入门系列
- 自动驾驶物体检测系列
- …