Python标准库【os】5 文件和目录操作2
文章目录
- 8 文件和目录操作
- 8.7 浏览目录下的内容
- 8.8 查看文件或目录的信息
- 8.9 文件状态修改
- 文件标志位
- 文件权限
- 文件所属用户和组
- 其它
- 8.10 浏览Windows的驱动器、卷、挂载点
- 8.11 系统配置信息
os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面。
这里整理了文件操作的部分方法。
参考:os模块官方文档
os模块的方法和系统相关,且一些方法依赖python版本,测试时使用下面的在线工具:
在线python-3.12版本-Unix平台
8 文件和目录操作
8.7 浏览目录下的内容
-
os.listdir(path='.')返回path指定目录下的条目的名称列表。
结果中不会包含特殊条目'.'和'..'。
path为字节串时,返回的结果也是字节串。>>> os.listdir("/") ['etc', 'sys', 'lib', 'srv', 'home', 'tmp', 'bin', 'boot', 'lib64', 'usr', 'dev', 'sbin', 'mnt', 'run', 'root', 'media', 'var', 'opt', 'proc', '.dockerenv'] -
os.scandir(path='.')返回类os.DirEntry类实例的迭代器,对应指定目录下的条目。
如果需要文件类型或属性信息,这个方法比os.listdir()更好用。因为os.DirEntry对象包含了这些信息。
scandir()支持上下文管理器:with os.scandir(path) as it:for entry in it:if not entry.name.startswith('.') and entry.is_file():print(entry.name)>>> os.scandir('/') <posix.ScandirIterator object at 0x7f5d787d7530> >>> list(os.scandir("/"))[:5] [<DirEntry 'etc'>, <DirEntry 'sys'>, <DirEntry 'lib'>, <DirEntry 'srv'>, <DirEntry 'home'>] -
class os.DirEntry
os.scandir()生成的对象,表示目录内某个条目的路径和文件属性。
它可以作为类路径对象使用。它的属性和方法的调用结果是缓存好的,如果文件源数据已更改,就需要使用os.stat()获取最新的信息。它有以下属性和方法:
name,文件名,是基于os.scandir()的path参数的相对路径。path,完整路径。os.scandir()的path参数为绝对路径时,该属性就为绝对路径;path参数是文件描述符,则该属性和name属性相同。isnode()返回条目的索引节点号。is_dir(*, follow_symlinks=True)条目是否为目录或指向目录的符号链接。is_file(*, follow_symlinks=True)条目是否为文件或指向文件的符号链接。is_symlink()条目是否为符号链接(断开的链接也算)。is_junction()条目是否为接合点(断开也算)。stat(*, follow_symlinks=True)返回条目对应的os.stat_result对象。
-
os.walk(top, topdown=True, onerror=None, followlinks=False)
生成目录树中的文件名,方式为从上到下或从下到上浏览目录树。以top为根,目录树中的每个目录都会生成一个三元组
(dirpath, dirnames, filenames)。dirpath表示目录的路径,dirnames是dirpath中的子目录名称组成的列表。filenames是dirpath中非目录文件组成的列表。列表中的名称不包含路径部分。topdown为True时先生成父目录的三元组,为False时先生成子目录的三元组。topdown为True时,就地修改
dirnames列表,后续只会在dirnames中的内容做查找。这样做可以减少搜索、加入特定的访问顺序。topdown为False时,修改dirnames不影响后续检索,因为dirnames在dirpath之前就已经生成了。top为相对路径时,在
os.walk()返回前不要更改工作目录。
followlinks设置为True时,对于指向父目录的链接,会出现无限递归。>>> os.walk("/") <generator object walk at 0x7f905bf94040> >>> list(os.walk("/"))[:1] [('/', ['etc', 'sys', 'lib', 'srv', 'home', 'tmp', 'bin', 'boot', 'lib64', 'usr', 'dev', 'sbin', 'mnt', 'run', 'root', 'media', 'var', 'opt', 'proc'], ['.dockerenv'])] -
os.fwalk(top='.', topdown=True, onerror=None, *, dir_fd=None, follow_symlinks=False)
效果和os.walk()一样,不过产生四元组(dirpath, dirnames, filenames, dirfd),dirfd是指向dirpath的文件描述符。
8.8 查看文件或目录的信息
-
os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
使用实际用户ID/用户组ID测试对path的访问。参数mode指定对path做什么测试:
os.F_OK(是否存在)、os.R_OK(可读)、os.W_OK(可写)、os.X_OK(可执行)。参数effective_ids为True时,将使用有效用户ID/用户组ID而不是实际用户ID/用户组ID。可以用
os.supports_effective_ids检测是否支持使用有效用户ID/用户组ID。os.access()方法指示I/O操作会成功,但是实际可能失败,尤其是对网络文件系统的操作。 -
os.supports_effective_ids
一个集合,表示当前平台上是否支持os.access()的effective_ids指定为True。不支持时集合为空。>>> os.supports_effective_ids {<built-in function access>} -
os.stat(path, *, dir_fd=None, follow_symlinks=True)
获取文件或描述符的状态。返回一个os.stat_result对象。>>> os.stat('.') os.stat_result(st_mode=16895, st_ino=2814749767298829, st_dev=86, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1740675232, st_mtime=1740675232, st_ctime=1740675232) -
os.lstat(path, *, dir_fd=None)
类似于os.stat,但不会跟随符号链接。
返回一个类os.stat_result的实例。 -
class os.stat_result
这个类用于os.stat()、os.fstat()、os.lstat的输出。
它有以下属性:st_mode,文件模式,包括文件类型和权限;st_ino,文件的索引节点号;st_dev,文件所在设备的标识符;st_nlink,硬链接数目;st_uid,所有者的用户ID;st_gid,所有者的组ID;st_size,文件大小(字节),符号链接的大小是它包含的路径的长度;st_atime,最近访问时间(秒);st_mtime,最近修改时间(秒);st_ctime,元数据最近更改的时间(秒);st_atime_ns,最近访问时间(纳秒);st_mtime_ns,最近修改时间(纳秒);st_ctime_ns,元数据最近更改的时间(纳秒);st_birthtime,文件创建时间(秒);st_birthtime_ns,文件创建时间(纳秒);st_blocks,文件的字节块数,每块512字节;st_blksize,块大小;st_rdev,设备类型;st_flags,用户定义的文件标志位;st_gen,文件生成号;st_fstype,文件所在的文件系统的类型的唯一标识符;st_rsize,文件的实际大小;st_creator,文件的创建者;st_type,文件类型;
上述时间属性的值依赖于操作系统的精度。
-
os.statvfs(path)返回所在的文件系统信息。仅Unix可用。>>> os.statvfs(".") os.statvfs_result(f_bsize=4096, f_frsize=4096, f_blocks=244186111, f_bfree=83501754, f_bavail=83501754, f_files=999, f_ffree=1000000, f_favail=1000000, f_flag=1024, f_namemax=255)
8.9 文件状态修改
文件标志位
os.chflags(path, flags, *, follow_symlinks=True)
把path的flags设置为其他由数字表示的flags。
flags的值在stat模块中定义。os.lchflags(path, flags)把path的flags设置为其他数字表示的flags。
文件权限
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)把path的权限改为其他mode表示的权限。
mode的可选值在stat模块中定义。os.lchmod(path, mode)把path的mode改为其他数字表示的mode。
等效于os.chmod(path, mode, follow_symlinks=False)
文件所属用户和组
-
os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)
修改path的用户和组ID。uid、gid设置为-1时表示不做修改。 -
os.lchown(path, uid, gid)修改path的用户和组ID。
等效于os.chown(path, uid, gid, follow_symlinks=False)。 -
os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)设置文件的访问时间和修改时间。
times不为None时,必须是(atime, mtime)形式的二元组,成员是表示秒的整数或浮点数。
times为None,指定ns时,ns必须是纳秒组成的二元组(atime_ns, mtime_ns);
times为None且未指定ns时,相当于以当前时间指定ns=(atime_ns, mtime_ns)。
同时指定times和ns会出错。
其它
os.sync()强制将所有内容写入磁盘。os.truncate(path, length)截断文件,使其最大为length大小。
8.10 浏览Windows的驱动器、卷、挂载点
-
os.listdrives()返回系统的驱动器名称列表。>>> os.listdrives() ['C:\\', 'D:\\'] -
os.listvolumes()返回一个包含系统中卷的列表。 -
os.listmounts(volume)返回指定卷的挂载点的列表。
volume必须是GUID路径,如os.listvolumes()返回的值。>>> os.listvolumes() ['\\\\?\\Volume{02cf02ce-0000-0000-0000-100000000000}\\', '\\\\?\\Volume{d29ac86d-e09b-40da-b12c-87d386a77303}\\', '\\\\?\\Volume{fc57ca93-ead3-4d89-9578-543426fafadf}\\', '\\\\?\\Volume{836efff0-1021-4a45-8c98-aa445d4d836a}\\'] >>> os.listmounts(os.listvolumes()[1]) ['C:\\']
8.11 系统配置信息
-
os.pathconf(path, name)
返回所给名称的文件的系统配置信息。 -
os.pathconf_names当前系统定义的配置名称字典。
是os.pathconf()和os.fpathconf()两个函数可接受的名称和整数值之间的映射。>>> os.pathconf_names {'PC_ALLOC_SIZE_MIN': 18, 'PC_ASYNC_IO': 10, 'PC_CHOWN_RESTRICTED': 6, 'PC_FILESIZEBITS': 13, 'PC_LINK_MAX': 0, 'PC_MAX_CANON': 1, 'PC_MAX_INPUT': 2, 'PC_NAME_MAX': 3, 'PC_NO_TRUNC': 7, 'PC_PATH_MAX': 4, 'PC_PIPE_BUF': 5, 'PC_PRIO_IO': 11, 'PC_REC_INCR_XFER_SIZE': 14, 'PC_REC_MAX_XFER_SIZE': 15, 'PC_REC_MIN_XFER_SIZE': 16, 'PC_REC_XFER_ALIGN': 17, 'PC_SOCK_MAXBUF': 12, 'PC_SYMLINK_MAX': 19, 'PC_SYNC_IO': 9, 'PC_VDISABLE': 8}
以上是os模块关于文件和目录操作的一部分函数的整理。
该模块的其他内容参考:
os模块:环境变量、进程所属的用户和组
os模块:进程管理
os模块:调度策略、系统信息
os模块:文件和目录1
os模块:文件描述符操作1
os模块:文件描述符操作2
相关文章:
Python标准库【os】5 文件和目录操作2
文章目录 8 文件和目录操作8.7 浏览目录下的内容8.8 查看文件或目录的信息8.9 文件状态修改文件标志位文件权限文件所属用户和组其它 8.10 浏览Windows的驱动器、卷、挂载点8.11 系统配置信息 os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面…...
[代码规范]接口设计规范
一个优雅的接口要如何设计?有哪些设计规范可以遵循? 下面抛砖引玉,分享一些规范。 目录 1、RESTful API 设计最佳实践 2、Shneiderman 的 8 条黄金法则 3、Nielsen 的 10 条启发式规则 1、RESTful API 设计最佳实践 一共18条,参考…...
什么是最终一致性,它对后端系统的意义是什么
最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…...
Unity学习笔记之——ugui的性能优化
在Unity中UI优化的核心问题就是重绘和批处理之间的平衡 一、Canvas优化要点 1.优化原因: (1)Unity为了性能优化,会合并Canvas下的所有元素; (2)如果把所有面板放到一个Canvas下,会…...
Python接口自动化中操作Excel文件的技术方法
在Python接口自动化测试中,操作Excel文件是一项常见且关键的技术需求。Excel作为数据存储和数据分析的重要工具,在自动化测试中通常用于存储测试用例、测试数据以及测试结果。通过Python操作Excel,可以大大提高测试的效率和灵活性。以下是一些…...
[Windows] 免费电脑控制手机软件 极限投屏_正式版_3.0.1 (QtScrcpy作者开发)
[Windows] 极限投屏_正式版 链接:https://pan.xunlei.com/s/VOKJf8Z1u5z-cHcTsRpSd89tA1?pwdu5ub# 新增功能(Future): 支持安卓14(Supports Android 14)提高投屏成功率(Improve the success rate of mirror)加快投屏速度(Accelerate screen mirrorin…...
游戏引擎学习第131天
仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化,特别是针对渲染和多线程的部分。目前,我们的目标是让地面块在独立线程上进行渲染,以提高性能。在此过程中,我…...
Visual Studio Code集成MarsCode AI
Visual Studio Code集成MarsCode AI 1、搜索MarsCode AI 安装包 2、点击install安装即可 小编这里已经安装过了 3、登录自己的账号 点击链接,注册账号 https://www.marscode.cn/events/s/i5DRGqqo/ 4、登录后可以自己切换模型...
partner‘127.0.0.1:3200‘ not reached
在SAP虚拟机中,如果LRPSAP 0显示黄色,通常表示服务启动异常或存在配置问题。以下是一些可能的处理方法: 检查主机文件配置 确保主机文件(hosts)中已正确配置SAP服务的域名解析。例如,添加以下内容到hosts文…...
蓝桥备赛(六)- C/C++输入输出
一、OJ题目输入情况汇总 OJ(online judge) 接下来会有例题 , 根据一下题目 , 对这些情况进行分析 1.1 单组测试用例 单在 --> 程序运行一次 , 就处理一组 练习一:计算 (ab)/c 的值 B2009 计算 (ab)/c …...
Flume
Flume安装配置 使用的三台主机名称分别为bigdata1,bigdata2,bigdata3。所使用的安装包名称按自己的修改,安装包可去各大官网上下载 1.解压 将Master节点Flume安装包解压到/opt/module目录下 tar -zxvf /opt/software/apache-flume-1.9.0-bi…...
Java 大视界 -- Java 大数据中的时间序列数据异常检测算法对比与实践(103)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
三次握手内部实现原理
socket()创建一个新的套接字 int socket(int domain, int type, int protocol); 参数: domain:地址族,如 AF_INET(IPv4),AF_INET6(IPv6) type:套接字类型&…...
ES from size聚合查询10000聚合查询,是每个分片先聚合,再统计。还是所有节点查询1万条后,再聚合
在 Elasticsearch 中,聚合查询 的执行过程是 分布式 的,Elasticsearch 会先在每个分片(shard)上执行本地聚合,然后再在协调节点(coordinating node)上对所有分片的聚合结果进行 全局汇总。具体过…...
JAVA实战开源项目:安康旅游网站(Vue+SpringBoot) 附源码
本文项目编号 T 098 ,文末自助获取源码 \color{red}{T098,文末自助获取源码} T098,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
Redis详解(实战 + 面试)
目录 Redis 是单线程的!为什么 Redis-Key(操作redis的key命令) String 扩展字符串操作命令 数字增长命令 字符串范围range命令 设置过期时间命令 批量设置值 string设置对象,但最好使用hash来存储对象 组合命令getset,先get然后在set Hash hash命令: h…...
宝塔webhooks与码云实现自动部署
1. 宝塔面板配置Webhook 登录宝塔面板,进入「软件商店」→ 搜索「Webhook」并安装。添加Webhook: 名称:自定义(如 Gitee自动部署)脚本:编写部署脚本,示例如下:#!/bin/bash# 项目路径…...
什么是Agentic AI?(Doubao-1.5-pro-32k 大模型开启联网回答)
Agentic AI即代理式人工智能,也称为智能体AI、代理式AI、能动AI或自主AI(Autonomous AI),是人工智能领域的新兴概念。它是指被设计用来通过理解目标、导航复杂环境,并在最少的人工干预下执行任务的系统,能够…...
LSTM预测模型复现笔记和问题记录
LSTM复现笔记和问题记录 1 LSTM复现记录1.1 复现环境配置1.2 LSTM_Fly文件夹1.2.1 LSTM回归网络(1→1).py1.2.1.1 加载数据1.2.1.2 数据处理1.2.1.3 输入模型维度 1.2.2 移动窗口型回归(3→1).py1.2.2.1 数据处理1.2.2.2 输入模型维度 1.2.3 时间步长型回归(3→1).py1.2.3.1 数…...
开篇词 | Go 项目开发极速入门课介绍
欢迎加入我的训练营:云原生 AI 实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营。实战营中包含大量 Go、云原生、AI Infra 相关的优质实战课程和项目。欢迎关注我的公众号:令飞编程,持续分享 Go、云原生、AI Infra 技…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
