os模块学习

【一】文件路径相关的操作

【1】获取当前文件所在的文件夹路径

# os.path.dirname(__file__)
​
import os
file_name = os.path.dirname(__file__)
print(file_name)        # H:\pycharm projects\day\模块学习2

【2】获取当前文件所在的文件路径

# os.path.abspath(__file__)
​
import os
file_path = os.path.abspath(__file__)
print(file_path)    # H:\pycharm projects\day\模块学习2\os模块学习.py

【3】判断当前文件路径是否存在 文件夹/文件

import os
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
print(os.path.exists(path=file_name))   # True
print(os.path.exists(path=file_path))   # True

【4】拼接文件路径

file_new = os.path.join(file_name,'data')
print(os.path.exists(path=file_new))    # Flase

【5】切割文件路径

# os.path.split()
​
import os
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
file_split = os.path.split(file_name)
print(file_split)
file_split = os.path.split(file_path)
print(file_split)

【6】直接获取文件夹结尾路径

# os.path.dirname()
​
import os
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
file_name_basename = os.path.basename(file_name)
print(file_name_basename)
file_name_basename2 = os.path.basename(file_path)
print(file_name_basename2)

【7】判断当前文件路径是否是文件夹/文件

# os.path.isfile()  是否为文件
# os.path.isdir()   是否为文件夹
import os
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
# 判断是否为文件
print(os.path.isfile(file_name))  # False
print(os.path.isfile(file_path))  # True
# 判断是否为文件夹
print(os.path.isdir(file_name))  # True
print(os.path.isdir(file_path))  # False

【8】判断当前路径是否为绝对路径

# os.path.isabs()
​
file_path = os.path.abspath(__file__)
path_one = './05os模块.py'
print(os.path.isabs(path_one))  # False
print(os.path.isabs(file_path))  # True

【9】获取当前文件或目录

(1)active:最后访问时间

os.path.getatime

import time
base_dir = os.path.getatime(file_name)
print(base_dir)
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getatime(file_path))))
(2)create:创建时间

os.path.getctime

import os
import time
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getctime(file_path))))  
# 2024-04-19 10:10:28
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getctime(file_name))))
# 2024-04-19 09:19:26
(3)modify:修改时间

os.path.getmtime

import os
import time
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getmtime(file_name))))
# 2024-04-19 19:11:43
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getmtime(file_path))))
# 2024-04-19 19:11:43

【10】获取当前文件的大小

import os
import time
file_name = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
print(os.path.getsize(file_name))		# 4096
print(os.path.getsize(file_path))		# 2226

【二】文件和文件夹操作

【1】主动创建文件夹

os.mkdir()创建文件夹

import os
base_dir = os.path.dirname(__file__)	# 获取路径,去除最后一个路径
print(base_dir)         # H:\pycharm projects\day\模块学习2
img_path = os.path.join(base_dir, 'img')	# 添加一个新文件夹路径
print(os.path.exists(img_path))		# Flase  文件夹不存在
if not os.path.exists(img_path):	# 判断文件夹是否存在os.mkdir(img_path)				# 不存在则创建一个
print(os.path.exists(img_path))		# True

【2】创建多级文件夹

与上面创建单级同理

os.makedirs() 创建多级文件夹

import os
base_dir = os.path.dirname(__file__)
log_path = os.path.join(base_dir,'log','user_log','user_logs')
if not os.path.exists(log_path):os.makedirs(log_path)
print(os.path.exists(log_path))

【3】删除单级文件夹

只能删除空文件夹,即使文件夹内有空文件也不行,那不算空

os.rmdir() 删除文件夹

import os
base_dir = os.path.dirname(__file__)			# 获取文件夹路径,去除最后一条路径
img_path = os.path.join(base_dir, 'img')		# 给目标文件img赋值
# H:\pycharm projects\day\模块学习2\img
print(os.path.exists(img_path))			# True	输出一下判断它是否存在
os.rmdir(img_path)		# 删除文件夹
print(os.path.exists(img_path))			# False 再次输出判断是否存在

【4】删除多级文件夹

删除多级文件夹,路径需要到最里面那一层并且每一个文件夹必须是空的

import os
base_dir = os.path.dirname(__file__)
file_name = 'log'
log_path = os.path.join(file_name, 'user_log')
file_trues_path = os.path.join(base_dir,log_path,'user_logs')
print(file_trues_path)
print(os.path.exists(file_trues_path))
os.removedirs(file_trues_path)
print(os.path.exists(file_trues_path))

【5】列出当前文件下的所有文件名

or.listdir() 列出当前文件下所有文件名

import os
base_dir = os.path.dirname(__file__)
print(os.listdir(base_dir))
# ['datetime学习.py', 'logging.py', 'os模块学习.py', 'time学习.py', '__pycache__']

【6】删除指定文件

os.remove()删除指定路径下的某个文件

import os
base_dir = os.path.dirname(__file__)		
data_path = os.path.join(base_dir, 'logging.py')	# 检索出logging.py文件
os.remove(data_path)			# 删除文件

【7】给指定文件或者文件夹重命名

给两个绝对路径

一个没改之前的,另一个是想改成后的

os.rename(原来的名字,修改后名字)

import os
base_dir = os.path.dirname(__file__)
old_path = os.path.join(base_dir,'logging.py')		# 修改前的命名
new_path = os.path.join(base_dir,'logging模块学习.py')	# 修改后的命名
os.rename(old_path,new_path)

【8】获取当前文件/文件夹的详细信息,元信息

os.stat()

import os
base_dir = os.path.dirname(__file__)
new_path = os.path.join(base_dir,'time学习.py')
print(os.stat(base_dir))
print(os.stat(new_path))
# os.stat_result(st_mode=16895, st_ino=3940649674019133, st_dev=258217787, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1713530028, st_mtime=1713530028, st_ctime=1713489566)
# os.stat_result(st_mode=33206, st_ino=2814749767176544, st_dev=258217787, st_nlink=1, st_uid=0, st_gid=0, st_size=1985, st_atime=1713516155, st_mtime=1713515045, st_ctime=1713489582)

【9】获取当前工作目录

os.getcwd()

import os
base_dir = os.path.dirname(__file__)
print(os.getcwd())
# H:\pycharm projects\day\模块学习2

【10】切换工作目录

import os
base_dir = os.path.dirname(__file__)
change_path = os.path.join(os.path.dirname(base_dir),'模块学习')
os.chdir(change_path)
print(os.getcwd())		# H:\pycharm projects\day\模块学习

【11】补充

import os
base_dir = os.path.dirname(__file__)
# 执行cmd命令
print(os.system('dir'))
# ping百度
print(os.popen('ping www.baidu.com'))
# 输出操作系统特定的路径分隔符
print(os.sep)
# 输出当前平台使用的行终止符
print(os.linesep)
# 输出用于分割文件路径的字符串
print(os.pathsep)
# 输出字符串指示当前使用平台
print(os.name)

小结

# 【记住的重点】
# os.path.join() 拼接路径
# os.path.dirname(__file__) 获取当前文件所在的文件夹路径
# os.path.abspath(__file__)获取当前文件所在的文件路径
# os.path.exists() 判断路径是否存在
# os.mkdir() 创建单级文件夹
# os.makedirs() 创建多级文件夹
# os.makedirs(path, exist_ok=True) 自动创建不存在的多级文件夹路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts部分属性使用

标题部分 (title): 控制图表的标题显示,包括主标题和副标题。你可以设置标题的文字内容、样式、位置等属性。 图例部分 (legend): 图例是用来标识每个系列的名称的,可以让用户通过点击图例来控制显示/隐藏对应的数据系列。 提示框部分 (tooltip): 当鼠…

Rust基本数据类型-字符串

一、字符串是什么,怎么用 1、字符串是什么 先说明一下,在Rust中,字符是UniCode编码占4个字节,字符串类型的字符是UTF-8编码的,字节大小为1~3。 字符串类型在Rust中,可以分为&Str和String…

【极速前进】20240415-20240421:TR-DPO、压缩与智能的线性关系、模拟伪代码改善算术能力、Many-shot、合成数据综述

一、TR-DPO:更新reference模型能实现更好的对齐 论文地址:https://arxiv.org/pdf/2404.09656.pdf ​ 语言模型对齐的训练目标是: max ⁡ π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( x , y ) ∥ π …

JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 File 文件概述 2.0 创建 File 类对象的方法 2.1 判断文件类型、获取文件信息的方法 2.2 创建文件、删除文件的方法 2.3 遍历文件夹的方法 3.0 文件搜索与删除 3.1…

OSPF面试题收集

第一章:基础理论部分 基础部分面试官主要是问一些简单得原理,口头描述的东西。不会涉及到报文的参数属性等。 OSPF是什么 定义也就是链路状态协议和距离矢量协议的区别区别。 开放式最短路径优先协议 路由是以自己为根,根据数据库计算去往所有树枝节点的最佳路径放进自己…

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP(超文本传输协议) 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

PVE grub resue错误修复 lvmid BUG

服务器断电后启动不起来,显示grub resue 找了半天没有找到修复方法。看官方文档有一处Recovering from grub “disk not found” error when booting from LVM 极为类似。https://pve.proxmox.com/wiki/Recover_From_Grub_Failure 下面是处理过程。 使用PVE 6.4启…

Leetcode算法训练日记 | day33

专题九 贪心算法 一、跳跃游戏 1.题目 Leetcode:第 55 题 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 …

机器学习(二)之监督学习

前言: 上一节大概讲解了几种学习方式,下面几张就具体来讲讲监督学习的几种算法。 以下示例中和都是权重的意思!!! 注:本文如有错误之处,还请读者指出,欢迎评论区探讨! 1…

MATLAB实现图片栅格化

MATLAB实现图片栅格化 1.读取图片:首先,你需要使用imread函数读取要栅格化的图片。 2.设置栅格大小:确定你希望将图片划分成的栅格大小,即每个栅格的宽度和高度。 3.计算栅格数量:根据图片的总尺寸和栅格大小&#…

搜索+剪枝,LeetCode 216. 组合总和 III

目录 一、题目 1、题目描述 2、接口描述 python3 cpp 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 python3 cpp 一、题目 1、题目描述 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多…

Compose 布局

文章目录 Compose 布局ColumnColumn属性使用 RowRow属性使用 BoxBox属性使用 ConstraintLayoutLazyColumnLazyColumn属性使用使用多类型使用粘性标题回到顶部 LazyRowLazyRow属性使用 LazyVerticalGridLazyVerticalGrid属性使用 Compose 布局 Column Compose中的”垂直线性布…

F-logic DataCube3 SQL注入漏洞复现(CVE-2024-31750)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/pr_monitor/getting_index_data.php 接口处存在SQL注入漏洞,未经身份验证的攻击者可通过该漏洞获取数据库敏感信息,深入利用可控制整个web服务器。 …

计算机图形学:直线生成算法—DDA

DDA(Digital Differential Analyzer,数字差分分析器)算法是一种基本的直线生成算法,通常用于计算机图形学中。它通过将直线划分为若干个等间隔的小线段,然后在每个小线段中选择一个像素点进行绘制,从而近似…

R-Tree:空间索引技术原理及实现详解

R-Tree:空间索引技术原理及实现详解 一、引言 在空间数据库中,如何高效地查询和处理空间数据一直是研究的热点。R-Tree作为一种重要的空间索引结构,在地理信息系统(GIS)、空间数据库管理系统等领域得到了广泛应用。本…

三十二章、Cesium从入门到精通;

一、打造第一个Cesium程序; 1、基础概念; 父子组件之间可以传递数据:props、回传事件; 使用Redux使用场景:兄弟; 2、代码样例; 11111111 二、Cesium基础设置; 三、讲解viewer…

产品原型图概念

产品原型图概念 产品原型图作用 如下图: 产品原型图的三种分类 线框图 通过【线段色块文字】描述产品页面。优点:制作快速。 缺点:传递信息容易遗漏。 应用:早期方案讨论,需要快速输出的场景,团队配合…

Java算法必备之快读

背景: 在一些算法题中,由于数据量过大,可能会出现卡输入输出时间的问题 原理: 在Java中,输入通常是使用Scanner,输出使用System.out,先说输入 Scanner in new Scanner(System.in);慢的原因有两方面: System.in在读取的时候是字节流进行读取,是一个字节一个字节读取的,在读取…

【工作杂记】groupBy排序-操作word

1.stream 流 groupBy 排序 stream流groupBy默认使用的HashMap&#xff0c;无序的&#xff0c;想要实现有序&#xff0c;需要手动指定接收的map类型 例子&#xff1a; Map<Date, List<OrderVo>> dataMap voList.stream().sorted(Comparator.comparing(OrderVo::ge…

华为OD-C卷-执行任务赚积分[100分]C++ 100%

题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。 输…